Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #932: pluralize-capitalized.diff

File pluralize-capitalized.diff, 4.4 kB (added by bitsweat, 4 years ago)
  • test/inflector_test.rb

    old new  
    1717    "process"     => "processes", 
    1818    "address"     => "addresses", 
    1919    "case"        => "cases", 
    20     "stack"       => "stacks", 
    21     "wish"             => "wishes", 
    22     "fish"             => "fish", 
     20    "stack"       => "stacks", 
     21    "wish"        => "wishes", 
     22    "fish"        => "fish", 
    2323 
    2424    "category"    => "categories", 
    2525    "query"       => "queries", 
     
    9292    "underground"     => "Underground" 
    9393  } 
    9494 
    95   def test_pluralize 
    96     SingularToPlural.each do |singular, plural| 
     95  def test_pluralize_plurals 
     96    assert_equal "plurals", Inflector.pluralize("plurals") 
     97    assert_equal "Plurals", Inflector.pluralize("Plurals") 
     98  end 
     99 
     100  SingularToPlural.each do |singular, plural| 
     101    define_method "test_pluralize_#{singular}" do 
    97102      assert_equal(plural, Inflector.pluralize(singular)) 
     103      assert_equal(plural.capitalize, Inflector.pluralize(singular.capitalize)) 
    98104    end 
    99  
    100     assert_equal("plurals", Inflector.pluralize("plurals")) 
    101105  end 
    102106 
    103   def test_singularize 
    104     SingularToPlural.each do |singular, plural| 
     107  SingularToPlural.each do |singular, plural| 
     108    define_method "test_singularize_#{plural}" do 
    105109      assert_equal(singular, Inflector.singularize(plural)) 
     110      assert_equal(singular.capitalize, Inflector.singularize(plural.capitalize)) 
    106111    end 
    107112  end 
    108113 
  • lib/active_support/inflector.rb

    old new  
    5757  private 
    5858    def plural_rules #:doc: 
    5959      [ 
    60         [/fish$/, 'fish'],               # fish 
    61         [/(x|ch|ss|sh)$/, '\1es'],               # search, switch, fix, box, process, address 
    62         [/series$/, '\1series'], 
    63         [/([^aeiouy]|qu)ies$/, '\1y'], 
    64         [/([^aeiouy]|qu)y$/, '\1ies'],        # query, ability, agency 
    65         [/(?:([^f])fe|([lr])f)$/, '\1\2ves'], # half, safe, wife 
    66         [/sis$/, 'ses'],                      # basis, diagnosis 
    67         [/([ti])um$/, '\1a'],                 # datum, medium 
    68         [/person$/, 'people'],                # person, salesperson 
    69         [/man$/, 'men'],                      # man, woman, spokesman 
    70         [/child$/, 'children'],               # child 
    71         [/s$/, 's'],                          # no change (compatibility) 
     60        [/(fish)$/i, '\1\2'],                 # fish 
     61        [/(x|ch|ss|sh)$/i, '\1es'],           # search, switch, fix, box, process, address 
     62        [/(series)$/i, '\1\2'], 
     63        [/([^aeiouy]|qu)ies$/i, '\1y'], 
     64        [/([^aeiouy]|qu)y$/i, '\1ies'],       # query, ability, agency 
     65        [/(?:([^f])fe|([lr])f)$/i, '\1\2ves'], # half, safe, wife 
     66        [/sis$/i, 'ses'],                     # basis, diagnosis 
     67        [/([ti])um$/i, '\1a'],                # datum, medium 
     68        [/(p)erson$/i, '\1\2eople'],          # person, salesperson 
     69        [/(m)an$/i, '\1\2en'],                # man, woman, spokesman 
     70        [/(c)hild$/i, '\1\2hildren'],         # child 
     71        [/s$/i, 's'],                         # no change (compatibility) 
    7272        [/$/, 's'] 
    7373      ] 
    7474    end 
    7575 
    7676    def singular_rules #:doc: 
    7777      [ 
    78         [/fish$/, 'fish'], 
    79         [/(x|ch|ss|sh)es$/, '\1'], 
    80         [/movies$/, 'movie'], 
    81         [/series$/, 'series'], 
    82         [/([^aeiouy]|qu)ies$/, '\1y'], 
    83         [/([lr])ves$/, '\1f'], 
    84         [/([^f])ves$/, '\1fe'], 
    85         [/(analy|ba|diagno|parenthe|progno|synop|the)ses$/, '\1sis'], 
    86         [/([ti])a$/, '\1um'], 
    87         [/people$/, 'person'], 
    88         [/men$/, 'man'], 
    89         [/status$/, 'status'], 
    90         [/children$/, 'child'], 
    91         [/news$/, 'news'], 
    92         [/s$/, ''] 
     78        [/(f)ish$/i, '\1\2ish'], 
     79        [/(x|ch|ss|sh)es$/i, '\1'], 
     80        [/(m)ovies$/i, '\1\2ovie'], 
     81        [/(s)eries$/i, '\1\2eries'], 
     82        [/([^aeiouy]|qu)ies$/i, '\1y'], 
     83        [/([lr])ves$/i, '\1f'], 
     84        [/([^f])ves$/i, '\1fe'], 
     85        [/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '\1\2sis'], 
     86        [/([ti])a$/i, '\1um'], 
     87        [/(p)eople$/i, '\1\2erson'], 
     88        [/(m)en$/i, '\1\2an'], 
     89        [/(s)tatus$/i, '\1\2tatus'], 
     90        [/(c)hildren$/i, '\1\2hild'], 
     91        [/(n)ews$/i, '\1\2ews'], 
     92        [/s$/i, ''] 
    9393      ] 
    9494    end 
    9595end