From df54309a55688abe6e9667ba2251e319fe975241 Mon Sep 17 00:00:00 2001 From: Bob Showalter Date: Thu, 7 Aug 2008 10:14:12 -0400 Subject: [PATCH] Improve inflector support for "-ves" plurals --- activesupport/lib/active_support/inflections.rb | 13 ++++++++----- activesupport/test/inflector_test_cases.rb | 4 ++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/activesupport/lib/active_support/inflections.rb b/activesupport/lib/active_support/inflections.rb index b6d2769..aa90567 100644 --- a/activesupport/lib/active_support/inflections.rb +++ b/activesupport/lib/active_support/inflections.rb @@ -9,8 +9,10 @@ module ActiveSupport inflect.plural(/(buffal|tomat)o$/i, '\1oes') inflect.plural(/([ti])um$/i, '\1a') inflect.plural(/sis$/i, 'ses') - inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves') - inflect.plural(/(hive)$/i, '\1s') + inflect.plural(/([aeiou][aeiou])f$/i, '\1ves') + inflect.plural(/([lnw]i)fe$/i, '\1ves') + inflect.plural(/([s]a)fe$/i, '\1ves') + inflect.plural(/([aeiou][lr])f$/i, '\1ves') inflect.plural(/([^aeiouy]|qu)y$/i, '\1ies') inflect.plural(/(x|ch|ss|sh)$/i, '\1es') inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '\1ices') @@ -23,9 +25,10 @@ module ActiveSupport inflect.singular(/([ti])a$/i, '\1um') inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '\1\2sis') inflect.singular(/(^analy)ses$/i, '\1sis') - inflect.singular(/([^f])ves$/i, '\1fe') - inflect.singular(/(hive)s$/i, '\1') - inflect.singular(/(tive)s$/i, '\1') + inflect.singular(/([aeiou][aeiou])ves$/i, '\1f') + inflect.singular(/([lnw]i)ves$/i, '\1fe') + inflect.singular(/([s]a)ves$/i, '\1fe') + inflect.singular(/([aeiou][lr])ves$/i, '\1f') inflect.singular(/([lr])ves$/i, '\1f') inflect.singular(/([^aeiouy]|qu)ies$/i, '\1y') inflect.singular(/(s)eries$/i, '\1eries') diff --git a/activesupport/test/inflector_test_cases.rb b/activesupport/test/inflector_test_cases.rb index a9dd83a..c519ba5 100644 --- a/activesupport/test/inflector_test_cases.rb +++ b/activesupport/test/inflector_test_cases.rb @@ -18,12 +18,16 @@ module InflectorTestCases "movie" => "movies", "archive" => "archives", + "dive" => "dives", "index" => "indices", + "knife" => "knives", + "life" => "lives", "wife" => "wives", "safe" => "saves", "half" => "halves", + "leaf" => "leaves", "move" => "moves", -- 1.5.6