Module: Language::English::Inflect

Defined in:
lib/merb-core/vendor/facets/inflect.rb

Overview

English Nouns Number Inflection.

This module provides english singular <-> plural noun inflections.

Class Method Summary collapse

Class Method Details

.plural(word) ⇒ Object Also known as: pluralize

Convert an English word from singular to plurel.

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


103
104
105
106
107
108
109
110
111
112
113
# File 'lib/merb-core/vendor/facets/inflect.rb', line 103

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



69
70
71
# File 'lib/merb-core/vendor/facets/inflect.rb', line 69

def plural_of
  @plural_of
end

.plural_rule(singular, plural) ⇒ Object

Define a plurualization rule.



46
47
48
# File 'lib/merb-core/vendor/facets/inflect.rb', line 46

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

.plural_word(singular, plural) ⇒ Object

Define a pluralization exception.



30
31
32
# File 'lib/merb-core/vendor/facets/inflect.rb', line 30

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

.pluralization_rulesObject

Read prepared pluralization rules.



60
61
62
63
64
65
66
# File 'lib/merb-core/vendor/facets/inflect.rb', line 60

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.



35
36
37
38
# File 'lib/merb-core/vendor/facets/inflect.rb', line 35

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

.singular(word) ⇒ Object Also known as: singularize

Convert an English word from plurel to singular.

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


83
84
85
86
87
88
89
90
91
92
# File 'lib/merb-core/vendor/facets/inflect.rb', line 83

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



74
75
76
# File 'lib/merb-core/vendor/facets/inflect.rb', line 74

def singular_of
  @singular_of
end

.singular_rule(singular, plural) ⇒ Object

Define a singularization rule.



41
42
43
# File 'lib/merb-core/vendor/facets/inflect.rb', line 41

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

.singular_word(singular, plural) ⇒ Object

Define a singularization exception.



25
26
27
# File 'lib/merb-core/vendor/facets/inflect.rb', line 25

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

.singularization_rulesObject

Read prepared singularization rules.



51
52
53
54
55
56
57
# File 'lib/merb-core/vendor/facets/inflect.rb', line 51

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.



18
19
20
21
22
# File 'lib/merb-core/vendor/facets/inflect.rb', line 18

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