Class: Credentials::Inflector::Inflections

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/credentials/inflector.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeInflections

Returns a new instance of Inflections.



23
24
25
# File 'lib/credentials/inflector.rb', line 23

def initialize
  @plurals, @singulars, @uncountables = [], [], []
end

Instance Attribute Details

#actorsObject (readonly)

Returns the value of attribute actors.



10
11
12
# File 'lib/credentials/inflector.rb', line 10

def actors
  @actors
end

#pluralsObject (readonly)

Returns the value of attribute plurals.



21
22
23
# File 'lib/credentials/inflector.rb', line 21

def plurals
  @plurals
end

#singularsObject (readonly)

Returns the value of attribute singulars.



21
22
23
# File 'lib/credentials/inflector.rb', line 21

def singulars
  @singulars
end

#uncountablesObject (readonly)

Returns the value of attribute uncountables.



21
22
23
# File 'lib/credentials/inflector.rb', line 21

def uncountables
  @uncountables
end

Instance Method Details

#actor(rule, replacement) ⇒ Object



16
17
18
# File 'lib/credentials/inflector.rb', line 16

def actor(rule, replacement)
  actors.insert 0, [ rule, replacement ]
end

#irregular(singular, plural) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/credentials/inflector.rb', line 46

def irregular(singular, plural)
  @uncountables.delete(singular)
  @uncountables.delete(plural)
  if singular[0,1].upcase == plural[0,1].upcase
    plural(Regexp.new("(#{singular[0,1]})#{singular[1..-1]}$", "i"), '\1' + plural[1..-1])
    singular(Regexp.new("(#{plural[0,1]})#{plural[1..-1]}$", "i"), '\1' + singular[1..-1])
  else
    plural(Regexp.new("#{singular[0,1].upcase}(?i)#{singular[1..-1]}$"), plural[0,1].upcase + plural[1..-1])
    plural(Regexp.new("#{singular[0,1].downcase}(?i)#{singular[1..-1]}$"), plural[0,1].downcase + plural[1..-1])
    singular(Regexp.new("#{plural[0,1].upcase}(?i)#{plural[1..-1]}$"), singular[0,1].upcase + singular[1..-1])
    singular(Regexp.new("#{plural[0,1].downcase}(?i)#{plural[1..-1]}$"), singular[0,1].downcase + singular[1..-1])
  end
end

#plural(rule, replacement) ⇒ Object



31
32
33
# File 'lib/credentials/inflector.rb', line 31

def plural(rule, replacement)
  plurals.insert 0, [ rule, replacement ]
end

#singular(rule, replacement) ⇒ Object



40
41
42
43
44
# File 'lib/credentials/inflector.rb', line 40

def singular(rule, replacement)
  @uncountables.delete(rule) if rule.is_a?(String)
  @uncountables.delete(replacement)
  @singulars.insert(0, [rule, replacement])
end

#uncountable(*words) ⇒ Object



60
61
62
# File 'lib/credentials/inflector.rb', line 60

def uncountable(*words)
  (@uncountables << words).flatten!
end