public
Fork of rails/rails
Description: Ruby on Rails - forked for implementing I18n patch
Homepage: http://rubyonrails.org
Clone URL: git://github.com/svenfuchs/rails.git
Fixed Inflector.pluralize to handle capitalized words #932 [bitsweat]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@998 
5ecf4fe2-1ee6-0310-87b1-e25e094e27de
dhh (author)
Sat Mar 26 05:20:47 -0800 2005
commit  abfa14d825c8eeb8e1ba33b6c9168445ec48f248
tree    c7f3a4164e37d6f46f5bb2b1b4c6268768bf662d
parent  87b1d3834f135390375f2fa06e9b2a22ade0b5cb
...
1
2
 
 
3
4
5
...
1
2
3
4
5
6
7
0
@@ -1,5 +1,7 @@
0
 *SVN*
0
 
0
+* Fixed Inflector.pluralize to handle capitalized words #932 [bitsweat]
0
+
0
 * Added Object#suppress which allows you to make a saner choice around with exceptions to swallow #980. Example:
0
 
0
     suppress(ZeroDivisionError) { 1/0 }
...
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
 
 
 
 
 
 
 
 
 
 
 
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
94
95
...
57
58
59
 
 
 
 
 
 
 
 
 
 
 
 
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
0
@@ -57,39 +57,39 @@ module Inflector
0
   private
0
     def plural_rules #:doc:
0
       [
0
- [/fish$/, 'fish'], # fish
0
- [/(x|ch|ss|sh)$/, '\1es'], # search, switch, fix, box, process, address
0
- [/series$/, '\1series'],
0
- [/([^aeiouy]|qu)ies$/, '\1y'],
0
- [/([^aeiouy]|qu)y$/, '\1ies'], # query, ability, agency
0
- [/(?:([^f])fe|([lr])f)$/, '\1\2ves'], # half, safe, wife
0
- [/sis$/, 'ses'], # basis, diagnosis
0
- [/([ti])um$/, '\1a'], # datum, medium
0
- [/person$/, 'people'], # person, salesperson
0
- [/man$/, 'men'], # man, woman, spokesman
0
- [/child$/, 'children'], # child
0
- [/s$/, 's'], # no change (compatibility)
0
+ [/(fish)$/i, '\1\2'], # fish
0
+ [/(x|ch|ss|sh)$/i, '\1es'], # search, switch, fix, box, process, address
0
+ [/(series)$/i, '\1\2'],
0
+ [/([^aeiouy]|qu)ies$/i, '\1y'],
0
+ [/([^aeiouy]|qu)y$/i, '\1ies'], # query, ability, agency
0
+ [/(?:([^f])fe|([lr])f)$/i, '\1\2ves'], # half, safe, wife
0
+ [/sis$/i, 'ses'], # basis, diagnosis
0
+ [/([ti])um$/i, '\1a'], # datum, medium
0
+ [/(p)erson$/i, '\1\2eople'], # person, salesperson
0
+ [/(m)an$/i, '\1\2en'], # man, woman, spokesman
0
+ [/(c)hild$/i, '\1\2hildren'], # child
0
+ [/s$/i, 's'], # no change (compatibility)
0
         [/$/, 's']
0
       ]
0
     end
0
 
0
     def singular_rules #:doc:
0
       [
0
- [/fish$/, 'fish'],
0
- [/(x|ch|ss|sh)es$/, '\1'],
0
- [/movies$/, 'movie'],
0
- [/series$/, 'series'],
0
- [/([^aeiouy]|qu)ies$/, '\1y'],
0
- [/([lr])ves$/, '\1f'],
0
- [/([^f])ves$/, '\1fe'],
0
- [/(analy|ba|diagno|parenthe|progno|synop|the)ses$/, '\1sis'],
0
- [/([ti])a$/, '\1um'],
0
- [/people$/, 'person'],
0
- [/men$/, 'man'],
0
- [/status$/, 'status'],
0
- [/children$/, 'child'],
0
- [/news$/, 'news'],
0
- [/s$/, '']
0
+ [/(f)ish$/i, '\1\2ish'],
0
+ [/(x|ch|ss|sh)es$/i, '\1'],
0
+ [/(m)ovies$/i, '\1\2ovie'],
0
+ [/(s)eries$/i, '\1\2eries'],
0
+ [/([^aeiouy]|qu)ies$/i, '\1y'],
0
+ [/([lr])ves$/i, '\1f'],
0
+ [/([^f])ves$/i, '\1fe'],
0
+ [/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '\1\2sis'],
0
+ [/([ti])a$/i, '\1um'],
0
+ [/(p)eople$/i, '\1\2erson'],
0
+ [/(m)en$/i, '\1\2an'],
0
+ [/(s)tatus$/i, '\1\2tatus'],
0
+ [/(c)hildren$/i, '\1\2hild'],
0
+ [/(n)ews$/i, '\1\2ews'],
0
+ [/s$/i, '']
0
       ]
0
     end
0
 end
...
17
18
19
20
21
22
 
 
 
23
24
25
...
92
93
94
95
96
 
 
 
 
 
 
 
97
 
98
99
100
101
102
103
104
 
 
105
 
106
107
108
...
17
18
19
 
 
 
20
21
22
23
24
25
...
92
93
94
 
 
95
96
97
98
99
100
101
102
103
104
 
 
105
106
 
 
107
108
109
110
111
112
113
0
@@ -17,9 +17,9 @@ class InflectorTest < Test::Unit::TestCase
0
     "process" => "processes",
0
     "address" => "addresses",
0
     "case" => "cases",
0
- "stack" => "stacks",
0
- "wish" => "wishes",
0
- "fish" => "fish",
0
+ "stack" => "stacks",
0
+ "wish" => "wishes",
0
+ "fish" => "fish",
0
 
0
     "category" => "categories",
0
     "query" => "queries",
0
@@ -92,17 +92,22 @@ class InflectorTest < Test::Unit::TestCase
0
     "underground" => "Underground"
0
   }
0
 
0
- def test_pluralize
0
- SingularToPlural.each do |singular, plural|
0
+ def test_pluralize_plurals
0
+ assert_equal "plurals", Inflector.pluralize("plurals")
0
+ assert_equal "Plurals", Inflector.pluralize("Plurals")
0
+ end
0
+
0
+ SingularToPlural.each do |singular, plural|
0
+ define_method "test_pluralize_#{singular}" do
0
       assert_equal(plural, Inflector.pluralize(singular))
0
+ assert_equal(plural.capitalize, Inflector.pluralize(singular.capitalize))
0
     end
0
-
0
- assert_equal("plurals", Inflector.pluralize("plurals"))
0
   end
0
 
0
- def test_singularize
0
- SingularToPlural.each do |singular, plural|
0
+ SingularToPlural.each do |singular, plural|
0
+ define_method "test_singularize_#{plural}" do
0
       assert_equal(singular, Inflector.singularize(plural))
0
+ assert_equal(singular.capitalize, Inflector.singularize(plural.capitalize))
0
     end
0
   end
0
 

Comments

    No one has commented yet.