Module: Inflect::InflectorMethods

Included in:
English
Defined in:
lib/utilities/inflect.rb

Instance Method Summary collapse

Instance Method Details

#plural(word) ⇒ Object

Convert an English word from singular to plurel.

"boy".plural     #=> boys
"tomato".plural  #=> tomatoes


93
94
95
96
97
98
99
100
101
102
103
# File 'lib/utilities/inflect.rb', line 93

def plural(word)
  if result = plural_of[word]
    return result.dup
  end
  #return self.dup if /s$/ =~ self # ???
  result = word.dup
  pluralization_rules.each do |(match, replacement)|
    break if result.gsub!(match, replacement)
  end
  return result
end

#plural_ofObject



63
64
65
# File 'lib/utilities/inflect.rb', line 63

def plural_of
  @plural_of
end

#plural_rule(singular, plural) ⇒ Object

Define a plurualization rule.



40
41
42
# File 'lib/utilities/inflect.rb', line 40

def plural_rule(singular, plural)
  @plural_rules << [singular, plural]
end

#plural_word(singular, plural) ⇒ Object

Define a pluralization exception.



24
25
26
# File 'lib/utilities/inflect.rb', line 24

def plural_word(singular, plural)
  @plural_of[singular] = plural
end

#pluralization_rulesObject

Read prepared pluralization rules.



54
55
56
57
58
59
60
# File 'lib/utilities/inflect.rb', line 54

def pluralization_rules
  return @pluralization_rules if @pluralization_rules
  sorted = @plural_rules.sort_by{ |s, p| "#{s}".size }.reverse
  @pluralization_rules = sorted.collect do |s, p|
    [ /#{s}$/, "#{p}" ]
  end
end

#rule(singular, plural) ⇒ Object

Define a general rule.



29
30
31
32
# File 'lib/utilities/inflect.rb', line 29

def rule(singular, plural)
  singular_rule(singular, plural)
  plural_rule(singular, plural)
end

#singular(word) ⇒ Object

Convert an English word from plurel to singular.

"boys".singular      #=> boy
"tomatoes".singular  #=> tomato


77
78
79
80
81
82
83
84
85
86
# File 'lib/utilities/inflect.rb', line 77

def singular(word)
  if result = singular_of[word]
    return result.dup
  end
  result = word.dup
  singularization_rules.each do |(match, replacement)|
    break if result.gsub!(match, replacement)
  end
  return result
end

#singular_ofObject



68
69
70
# File 'lib/utilities/inflect.rb', line 68

def singular_of
  @singular_of
end

#singular_rule(singular, plural) ⇒ Object

Define a singularization rule.



35
36
37
# File 'lib/utilities/inflect.rb', line 35

def singular_rule(singular, plural)
  @singular_rules << [singular, plural]
end

#singular_word(singular, plural) ⇒ Object

Define a singularization exception.



19
20
21
# File 'lib/utilities/inflect.rb', line 19

def singular_word(singular, plural)
  @singular_of[plural] = singular
end

#singularization_rulesObject

Read prepared singularization rules.



45
46
47
48
49
50
51
# File 'lib/utilities/inflect.rb', line 45

def singularization_rules
  return @singularization_rules if @singularization_rules
  sorted = @singular_rules.sort_by{ |s, p| "#{p}".size }.reverse
  @singularization_rules = sorted.collect do |s, p|
    [ /#{p}$/, "#{s}" ]
  end
end

#word(singular, plural = nil) ⇒ Object

Define a general exception.



12
13
14
15
16
# File 'lib/utilities/inflect.rb', line 12

def word(singular, plural=nil)
  plural = singular unless plural
  singular_word(singular, plural)
  plural_word(singular, plural)
end