Class: Patter::Inflector

Inherits:
Object
  • Object
show all
Defined in:
lib/patter/inflector.rb

Constant Summary collapse

RULES =
[
    [/(z)ombies$/i, "\\1ombies"],
    [/(z)ombie$/i, "\\1ombies"],
    [/k(?i)ine$/, "kine"],
    [/K(?i)ine$/, "Kine"],
    [/c(?i)ow$/, "kine"],
    [/C(?i)ow$/, "Kine"],
    [/(m)oves$/i, "\\1oves"],
    [/(m)ove$/i, "\\1oves"],
    [/(s)exes$/i, "\\1exes"],
    [/(s)ex$/i, "\\1exes"],
    [/(c)hildren$/i, "\\1hildren"],
    [/(c)hild$/i, "\\1hildren"],
    [/(m)en$/i, "\\1en"],
    [/(m)an$/i, "\\1en"],
    [/(p)eople$/i, "\\1eople"],
    [/(p)erson$/i, "\\1eople"],
    [/(quiz)$/i, "\\1zes"],
    [/^(oxen)$/i, "\\1"],
    [/^(ox)$/i, "\\1en"],
    [/^(m|l)ice$/i, "\\1ice"],
    [/^(m|l)ouse$/i, "\\1ice"],
    [/(matr|vert|ind)(?:ix|ex)$/i, "\\1ices"],
    [/(x|ch|ss|sh)$/i, "\\1es"],
    [/([^aeiouy]|qu)y$/i, "\\1ies"],
    [/(hive)$/i, "\\1s"],
    [/(?:([^f])fe|([lr])f)$/i, "\\1\\2ves"],
    [/sis$/i, "ses"],
    [/([ti])a$/i, "\\1a"],
    [/([ti])um$/i, "\\1a"],
    [/(buffal|tomat)o$/i, "\\1oes"],
    [/(bu)s$/i, "\\1ses"],
    [/(alias|status)$/i, "\\1es"],
    [/(octop|vir)i$/i, "\\1i"],
    [/(octop|vir)us$/i, "\\1i"],
    [/^(ax|test)is$/i, "\\1es"],
    [/s$/i, "s"],
    [/$/, "s"]
]
UNCOUNTABLES =
%w(equipment information rice money species series fish sheep jeans police)

Class Method Summary collapse

Class Method Details

.pluralize(str) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/patter/inflector.rb', line 46

def pluralize(str)
    if str.empty? || UNCOUNTABLES.any?(str)
        return str
    end

    RULES.each do |(rule, replacement)|
        break if str.gsub!(rule, replacement)
    end

    str
end