class ApipieBindings::Inflections
Attributes
acronym_regex[R]
acronyms[R]
humans[R]
plurals[R]
singulars[R]
uncountables[R]
Public Class Methods
instance(locale = :en)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 8 def self.instance(locale = :en) @__instance__[locale] ||= new end
new()
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 14 def initialize @plurals, @singulars, @uncountables, @humans, @acronyms, @acronym_regex = [], [], [], [], {}, /(?=a)b/ end
Public Instance Methods
acronym(word)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 18 def acronym(word) @acronyms[word.downcase] = word @acronym_regex = /#{@acronyms.values.join("|")}/ end
clear(scope = :all)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 72 def clear(scope = :all) case scope when :all @plurals, @singulars, @uncountables, @humans = [], [], [], [] else instance_variable_set "@#{scope}", [] end end
human(rule, replacement)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 68 def human(rule, replacement) @humans.unshift([rule, replacement]) end
irregular(singular, plural)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 35 def irregular(singular, plural) @uncountables.delete(singular) @uncountables.delete(plural) s0 = singular[0].chr srest = singular[1..-1] p0 = plural[0].chr prest = plural[1..-1] if s0.upcase == p0.upcase plural(/(#{s0})#{srest}$/i, '\1' + prest) plural(/(#{p0})#{prest}$/i, '\1' + prest) singular(/(#{s0})#{srest}$/i, '\1' + srest) singular(/(#{p0})#{prest}$/i, '\1' + srest) else plural(/#{s0.upcase}(?i)#{srest}$/, p0.upcase + prest) plural(/#{s0.downcase}(?i)#{srest}$/, p0.downcase + prest) plural(/#{p0.upcase}(?i)#{prest}$/, p0.upcase + prest) plural(/#{p0.downcase}(?i)#{prest}$/, p0.downcase + prest) singular(/#{s0.upcase}(?i)#{srest}$/, s0.upcase + srest) singular(/#{s0.downcase}(?i)#{srest}$/, s0.downcase + srest) singular(/#{p0.upcase}(?i)#{prest}$/, s0.upcase + srest) singular(/#{p0.downcase}(?i)#{prest}$/, s0.downcase + srest) end end
plural(rule, replacement)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 23 def plural(rule, replacement) @uncountables.delete(rule) if rule.is_a?(String) @uncountables.delete(replacement) @plurals.unshift([rule, replacement]) end
singular(rule, replacement)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 29 def singular(rule, replacement) @uncountables.delete(rule) if rule.is_a?(String) @uncountables.delete(replacement) @singulars.unshift([rule, replacement]) end
uncountable(*words)
click to toggle source
# File lib/apipie_bindings/inflector.rb, line 64 def uncountable(*words) (@uncountables << words).flatten! end