Fixed Inflector for words like "news" and "series" that are the same in plural and singular #603 [echion], #615 [marcenuc]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@618 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-02-15 02:02:20 +00:00
parent b1999be5a7
commit 603ab7d812
3 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,5 @@
* Fixed Inflector for words like "news" and "series" that are the same in plural and singular #603 [echion], #615 [marcenuc]
* Added Hash#stringify_keys and Hash#stringify_keys! * Added Hash#stringify_keys and Hash#stringify_keys!
* Added IndifferentAccess as a way to wrap a hash by a symbol-based store that also can be accessed by string keys * Added IndifferentAccess as a way to wrap a hash by a symbol-based store that also can be accessed by string keys

View File

@ -58,6 +58,7 @@ module Inflector
def plural_rules #:doc: def plural_rules #:doc:
[ [
[/(x|ch|ss|sh)$/, '\1es'], # search, switch, fix, box, process, address [/(x|ch|ss|sh)$/, '\1es'], # search, switch, fix, box, process, address
[/series$/, '\1series'],
[/([^aeiouy]|qu)ies$/, '\1y'], [/([^aeiouy]|qu)ies$/, '\1y'],
[/([^aeiouy]|qu)y$/, '\1ies'], # query, ability, agency [/([^aeiouy]|qu)y$/, '\1ies'], # query, ability, agency
[/(?:([^f])fe|([lr])f)$/, '\1\2ves'], # half, safe, wife [/(?:([^f])fe|([lr])f)$/, '\1\2ves'], # half, safe, wife
@ -75,6 +76,7 @@ module Inflector
[ [
[/(x|ch|ss)es$/, '\1'], [/(x|ch|ss)es$/, '\1'],
[/movies$/, 'movie'], [/movies$/, 'movie'],
[/series$/, 'series'],
[/([^aeiouy]|qu)ies$/, '\1y'], [/([^aeiouy]|qu)ies$/, '\1y'],
[/([lr])ves$/, '\1f'], [/([lr])ves$/, '\1f'],
[/([^f])ves$/, '\1fe'], [/([^f])ves$/, '\1fe'],
@ -84,6 +86,7 @@ module Inflector
[/men$/, 'man'], [/men$/, 'man'],
[/status$/, 'status'], [/status$/, 'status'],
[/children$/, 'child'], [/children$/, 'child'],
[/news$/, 'news'],
[/s$/, ''] [/s$/, '']
] ]
end end

View File

@ -49,7 +49,13 @@ class InflectorTest < Test::Unit::TestCase
"day" => "days", "day" => "days",
"comment" => "comments", "comment" => "comments",
"foobar" => "foobars" "foobar" => "foobars",
"newsletter" => "newsletters",
"old_news" => "old_news",
"news" => "news",
"series" => "series"
} }
CamelToUnderscore = { CamelToUnderscore = {
@ -162,4 +168,4 @@ class InflectorTest < Test::Unit::TestCase
assert_equal InflectorTest, Inflector.constantize("InflectorTest") assert_equal InflectorTest, Inflector.constantize("InflectorTest")
assert_raises(NameError) { Inflector.constantize("UnknownClass") } assert_raises(NameError) { Inflector.constantize("UnknownClass") }
end end
end end