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.