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:
parent
b1999be5a7
commit
603ab7d812
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue