English  English::Inflect

[Validate]
Generated with RDazzle Newfish 1.3.0

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
pluralize(word) click to toggle source

Alias for plural (a Railism).

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
singularize(word) click to toggle source

Alias for singular (a Railism).

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.