mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
handle double pluralization for irregular plurals
[#6363] Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
This commit is contained in:
parent
2eed9286ce
commit
1754bd9b20
3 changed files with 12 additions and 0 deletions
|
@ -4,10 +4,12 @@ module ActiveSupport
|
||||||
inflect.plural(/s$/i, 's')
|
inflect.plural(/s$/i, 's')
|
||||||
inflect.plural(/(ax|test)is$/i, '\1es')
|
inflect.plural(/(ax|test)is$/i, '\1es')
|
||||||
inflect.plural(/(octop|vir)us$/i, '\1i')
|
inflect.plural(/(octop|vir)us$/i, '\1i')
|
||||||
|
inflect.plural(/(octop|vir)i$/i, '\1i')
|
||||||
inflect.plural(/(alias|status)$/i, '\1es')
|
inflect.plural(/(alias|status)$/i, '\1es')
|
||||||
inflect.plural(/(bu)s$/i, '\1ses')
|
inflect.plural(/(bu)s$/i, '\1ses')
|
||||||
inflect.plural(/(buffal|tomat)o$/i, '\1oes')
|
inflect.plural(/(buffal|tomat)o$/i, '\1oes')
|
||||||
inflect.plural(/([ti])um$/i, '\1a')
|
inflect.plural(/([ti])um$/i, '\1a')
|
||||||
|
inflect.plural(/([ti])a$/i, '\1a')
|
||||||
inflect.plural(/sis$/i, 'ses')
|
inflect.plural(/sis$/i, 'ses')
|
||||||
inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves')
|
inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves')
|
||||||
inflect.plural(/(hive)$/i, '\1s')
|
inflect.plural(/(hive)$/i, '\1s')
|
||||||
|
@ -15,7 +17,9 @@ module ActiveSupport
|
||||||
inflect.plural(/(x|ch|ss|sh)$/i, '\1es')
|
inflect.plural(/(x|ch|ss|sh)$/i, '\1es')
|
||||||
inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '\1ices')
|
inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '\1ices')
|
||||||
inflect.plural(/([m|l])ouse$/i, '\1ice')
|
inflect.plural(/([m|l])ouse$/i, '\1ice')
|
||||||
|
inflect.plural(/([m|l])ice$/i, '\1ice')
|
||||||
inflect.plural(/^(ox)$/i, '\1en')
|
inflect.plural(/^(ox)$/i, '\1en')
|
||||||
|
inflect.plural(/^(oxen)$/i, '\1')
|
||||||
inflect.plural(/(quiz)$/i, '\1zes')
|
inflect.plural(/(quiz)$/i, '\1zes')
|
||||||
|
|
||||||
inflect.singular(/s$/i, '')
|
inflect.singular(/s$/i, '')
|
||||||
|
|
|
@ -64,6 +64,13 @@ class InflectorTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
SingularToPlural.each do |singular, plural|
|
||||||
|
define_method "test_pluralize_#{plural}" do
|
||||||
|
assert_equal(plural, ActiveSupport::Inflector.pluralize(plural))
|
||||||
|
assert_equal(plural.capitalize, ActiveSupport::Inflector.pluralize(plural.capitalize))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_overwrite_previous_inflectors
|
def test_overwrite_previous_inflectors
|
||||||
assert_equal("series", ActiveSupport::Inflector.singularize("series"))
|
assert_equal("series", ActiveSupport::Inflector.singularize("series"))
|
||||||
ActiveSupport::Inflector.inflections.singular "series", "serie"
|
ActiveSupport::Inflector.inflections.singular "series", "serie"
|
||||||
|
|
|
@ -44,6 +44,7 @@ module InflectorTestCases
|
||||||
|
|
||||||
"datum" => "data",
|
"datum" => "data",
|
||||||
"medium" => "media",
|
"medium" => "media",
|
||||||
|
"stadium" => "stadia",
|
||||||
"analysis" => "analyses",
|
"analysis" => "analyses",
|
||||||
|
|
||||||
"node_child" => "node_children",
|
"node_child" => "node_children",
|
||||||
|
|
Loading…
Reference in a new issue