Class: Hoodie::Inflections::Inflections

Inherits:
Object
  • Object
show all
Defined in:
lib/hoodie/inflections/inflections.rb

Overview

A singleton instance of this class is yielded by Inflections.inflections, which can then be used to specify additional inflection rules. Examples:

Inflections.inflections do |inflect|
  inflect.plural /^(ox)$/i, '\1\2en'
  inflect.singular /^(ox)en/i, '\1'

  inflect.irregular 'octopus', 'octopi'

  inflect.uncountable "equipment"
end

New rules are added at the top. So in the example above, the irregular rule for octopus will now be the first of the pluralization and singularization rules that is runs. This guarantees that your rules run before any of the rules that may already have been loaded.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeundefined

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initialize object



52
53
54
55
56
57
# File 'lib/hoodie/inflections/inflections.rb', line 52

def initialize
  @plurals      = RulesCollection.new
  @singulars    = RulesCollection.new
  @humans       = RulesCollection.new
  @uncountables = Set[]
end

Instance Attribute Details

#humansArray (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns humans.

Returns:

  • (Array)

    humans



46
47
48
# File 'lib/hoodie/inflections/inflections.rb', line 46

def humans
  @humans
end

#pluralsArray (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns plurals.

Returns:

  • (Array)

    plurals



34
35
36
# File 'lib/hoodie/inflections/inflections.rb', line 34

def plurals
  @plurals
end

#singularsArray (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns singulars.

Returns:

  • (Array)

    singulars



38
39
40
# File 'lib/hoodie/inflections/inflections.rb', line 38

def singulars
  @singulars
end

#uncountablesArray (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns uncountables.

Returns:

  • (Array)

    uncountables



42
43
44
# File 'lib/hoodie/inflections/inflections.rb', line 42

def uncountables
  @uncountables
end

Class Method Details

.instanceInflections

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return instance

Returns:



28
29
30
# File 'lib/hoodie/inflections/inflections.rb', line 28

def self.instance
  @__instance__ ||= new
end

Instance Method Details

#clearself

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Clear all inflection rules

Returns:

  • (self)


133
134
135
136
# File 'lib/hoodie/inflections/inflections.rb', line 133

def clear
  initialize
  self
end

#human(rule, replacement) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Specifies a humanized form of a string by a regular expression rule or by a string mapping. When using a regular expression based replacement, the normal humanize formatting is called after the replacement. When a string is used, the human form should be specified as desired (example: ‘The name’, not ‘the_name’)

Parameters:

Returns:

  • (self)


124
125
126
127
# File 'lib/hoodie/inflections/inflections.rb', line 124

def human(rule, replacement)
  @humans.insert(0, [rule, replacement])
  self
end

#irregular(singular, plural) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Specifies a new irregular that applies to both pluralization and singularization at the same time. This can only be used for strings, not regular expressions. You simply pass the irregular in singular and plural form.

Parameters:

Returns:

  • (self)


96
97
98
99
100
101
102
# File 'lib/hoodie/inflections/inflections.rb', line 96

def irregular(singular, plural)
  @uncountables.delete(singular)
  @uncountables.delete(plural)
  add_irregular(singular, plural, @plurals)
  add_irregular(plural, singular, @singulars)
  self
end

#plural(rule, replacement) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Specifies a new pluralization rule and its replacement. The rule can either be a string or a regular expression. The replacement should always be a string that may include references to the matched data from the rule.

Parameters:

Returns:

  • (self)


68
69
70
71
# File 'lib/hoodie/inflections/inflections.rb', line 68

def plural(rule, replacement)
  rule(rule, replacement, @plurals)
  self
end

#singular(rule, replacement) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Specifies a new singularization rule and its replacement. The rule can either be a string or a regular expression. The replacement should always be a string that may include references to the matched data from the rule.

Parameters:

Returns:

  • (self)


82
83
84
85
# File 'lib/hoodie/inflections/inflections.rb', line 82

def singular(rule, replacement)
  rule(rule, replacement, @singulars)
  self
end

#uncountable(*words) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Uncountable will not be inflected

Parameters:

Returns:

  • (self)


109
110
111
112
# File 'lib/hoodie/inflections/inflections.rb', line 109

def uncountable(*words)
  @uncountables.merge(words.flatten)
  self
end