In Files
Information
Noun Number Inflections
This module provides english singular <-> plural noun inflections.
Public Class Methods
clear(type = :all)
click to toggle source
Clear all rules.
# File lib/english/inflect.rb, line 174
174: def clear(type = :all)
175: if type == :singular || type == :all
176: @singular_of = {}
177: @singular_rules = []
178: @singularization_rules, @singularization_regex = nil, nil
179: end
180: if type == :plural || type == :all
181: @singular_of = {}
182: @singular_rules = []
183: @singularization_rules, @singularization_regex = nil, nil
184: end
185: end
plural(word)
click to toggle source
Convert an English word from singular to plurel.
"boy".plural #=> boys "tomato".plural #=> tomatoes
# File lib/english/inflect.rb, line 152
152: def plural(word)
153: return "" if word == ""
154: if result = plural_of[word]
155: return result.dup
156: end
157: #return self.dup if /s$/ =~ self # ???
158: result = word.dup
159:
160: regex, hash = pluralization_rules
161: result.sub!(regex) {|m| hash[m]}
162: plural_of[word] = result
163: return result
164: #pluralization_rules.each do |(match, replacement)|
165: # break if result.gsub!(match, replacement)
166: #end
167: #return result
168: end
Also aliased as: pluralize
plural_of()
click to toggle source
# File lib/english/inflect.rb, line 119
119: def plural_of ; @plural_of ; end
plural_rule(singular, plural)
click to toggle source
Define a plurualization rule.
# File lib/english/inflect.rb, line 72
72: def plural_rule(singular, plural)
73: @plural_rules << [singular, plural]
74: end
plural_word(singular, plural)
click to toggle source
Define a pluralization exception.
# File lib/english/inflect.rb, line 55
55: def plural_word(singular, plural)
56: @plural_of[singular] = plural
57: @plural_of[singular.capitalize] = plural.capitalize
58: end
pluralization_rules()
click to toggle source
Read prepared pluralization rules.
# File lib/english/inflect.rb, line 97
97: def pluralization_rules
98: if defined?(@pluralization_regex) && @pluralization_regex
99: return [@pluralization_regex, @pluralization_hash]
100: end
101: @pluralization_regex = Regexp.new("(" + @plural_rules.map {|s,p| s}.join("|") + ")$", "i")
102: @pluralization_hash = Hash[*@plural_rules.flatten]
103: [@pluralization_regex, @pluralization_hash]
104: end
rule(singular, plural)
click to toggle source
Define a general rule.
# File lib/english/inflect.rb, line 61
61: def rule(singular, plural)
62: singular_rule(singular, plural)
63: plural_rule(singular, plural)
64: end
singular(word)
click to toggle source
Convert an English word from plurel to singular.
"boys".singular #=> boy "tomatoes".singular #=> tomato
# File lib/english/inflect.rb, line 126
126: def singular(word)
127: return "" if word == ""
128: if result = singular_of[word]
129: return result.dup
130: end
131: result = word.dup
132:
133: regex, hash = singularization_rules
134: result.sub!(regex) {|m| hash[m]}
135: singular_of[word] = result
136: return result
137: #singularization_rules.each do |(match, replacement)|
138: # break if result.gsub!(match, replacement)
139: #end
140: #return result
141: end
Also aliased as: singularize
singular_of()
click to toggle source
# File lib/english/inflect.rb, line 116
116: def singular_of ; @singular_of ; end
singular_rule(singular, plural)
click to toggle source
Define a singularization rule.
# File lib/english/inflect.rb, line 67
67: def singular_rule(singular, plural)
68: @singular_rules << [singular, plural]
69: end
singular_word(singular, plural)
click to toggle source
Define a singularization exception.
# File lib/english/inflect.rb, line 49
49: def singular_word(singular, plural)
50: @singular_of[plural] = singular
51: @singular_of[plural.capitalize] = singular.capitalize
52: end
singularization_rules()
click to toggle source
Read prepared singularization rules.
# File lib/english/inflect.rb, line 77
77: def singularization_rules
78: if defined?(@singularization_regex) && @singularization_regex
79: return [@singularization_regex, @singularization_hash]
80: end
81: # No sorting needed: Regexen match on longest string
82: @singularization_regex = Regexp.new("(" + @singular_rules.map {|s,p| p}.join("|") + ")$", "i")
83: @singularization_hash = Hash[*@singular_rules.flatten].invert
84: [@singularization_regex, @singularization_hash]
85: end
word(singular, plural=nil)
click to toggle source
Define a general two-way exception.
This also defines a general rule, so foo_child will correctly become foo_children.
Whole words also work if they are capitalized (Goose => Geese).
# File lib/english/inflect.rb, line 41
41: def word(singular, plural=nil)
42: plural = singular unless plural
43: singular_word(singular, plural)
44: plural_word(singular, plural)
45: rule(singular, plural)
46: end
Disabled; run with --debug to generate this.