Merge pull request #1412 from wernerhp/master

Inflector pluralize and singularize update
This commit is contained in:
Mark Story 2013-07-10 08:59:03 -07:00
commit 1ecc921e13
2 changed files with 25 additions and 4 deletions

View file

@ -109,6 +109,14 @@ class InflectorTest extends CakeTestCase {
$this->assertEquals(Inflector::singularize('foes'), 'foe'); $this->assertEquals(Inflector::singularize('foes'), 'foe');
$this->assertEquals(Inflector::singularize('databases'), 'database'); $this->assertEquals(Inflector::singularize('databases'), 'database');
$this->assertEquals(Inflector::singularize('cookies'), 'cookie'); $this->assertEquals(Inflector::singularize('cookies'), 'cookie');
$this->assertEquals(Inflector::singularize('thieves'), 'thief');
$this->assertEquals(Inflector::singularize('potatoes'), 'potato');
$this->assertEquals(Inflector::singularize('heroes'), 'hero');
$this->assertEquals(Inflector::singularize('buffalos'), 'buffalo');
$this->assertEquals(Inflector::singularize('babies'), 'baby');
$this->assertEquals(Inflector::singularize('teeth'), 'tooth');
$this->assertEquals(Inflector::singularize('geese'), 'goose');
$this->assertEquals(Inflector::singularize('feet'), 'foot');
$this->assertEquals(Inflector::singularize(''), ''); $this->assertEquals(Inflector::singularize(''), '');
} }
@ -161,6 +169,14 @@ class InflectorTest extends CakeTestCase {
$this->assertEquals(Inflector::pluralize('roof'), 'roofs'); $this->assertEquals(Inflector::pluralize('roof'), 'roofs');
$this->assertEquals(Inflector::pluralize('foe'), 'foes'); $this->assertEquals(Inflector::pluralize('foe'), 'foes');
$this->assertEquals(Inflector::pluralize('cookie'), 'cookies'); $this->assertEquals(Inflector::pluralize('cookie'), 'cookies');
$this->assertEquals(Inflector::pluralize('wolf'), 'wolves');
$this->assertEquals(Inflector::pluralize('thief'), 'thieves');
$this->assertEquals(Inflector::pluralize('potato'), 'potatoes');
$this->assertEquals(Inflector::pluralize('hero'), 'heroes');
$this->assertEquals(Inflector::pluralize('buffalo'), 'buffalo');
$this->assertEquals(Inflector::pluralize('tooth'), 'teeth');
$this->assertEquals(Inflector::pluralize('goose'), 'geese');
$this->assertEquals(Inflector::pluralize('foot'), 'feet');
$this->assertEquals(Inflector::pluralize(''), ''); $this->assertEquals(Inflector::pluralize(''), '');
} }

View file

@ -40,7 +40,7 @@ class Inflector {
'/(x|ch|ss|sh)$/i' => '\1es', '/(x|ch|ss|sh)$/i' => '\1es',
'/([^aeiouy]|qu)y$/i' => '\1ies', '/([^aeiouy]|qu)y$/i' => '\1ies',
'/(hive)$/i' => '\1s', '/(hive)$/i' => '\1s',
'/(?:([^f])fe|([lr])f)$/i' => '\1\2ves', '/(?:([^f])fe|([lre])f)$/i' => '\1\2ves',
'/sis$/i' => 'ses', '/sis$/i' => 'ses',
'/([ti])um$/i' => '\1a', '/([ti])um$/i' => '\1a',
'/(p)erson$/i' => '\1eople', '/(p)erson$/i' => '\1eople',
@ -90,7 +90,12 @@ class Inflector {
'soliloquy' => 'soliloquies', 'soliloquy' => 'soliloquies',
'testis' => 'testes', 'testis' => 'testes',
'trilby' => 'trilbys', 'trilby' => 'trilbys',
'turf' => 'turfs' 'turf' => 'turfs',
'potato' => 'potatoes',
'hero' => 'heroes',
'tooth' => 'teeth',
'goose' => 'geese',
'foot' => 'feet'
) )
); );
@ -120,11 +125,11 @@ class Inflector {
'/(m)ovies$/i' => '\1\2ovie', '/(m)ovies$/i' => '\1\2ovie',
'/(s)eries$/i' => '\1\2eries', '/(s)eries$/i' => '\1\2eries',
'/([^aeiouy]|qu)ies$/i' => '\1y', '/([^aeiouy]|qu)ies$/i' => '\1y',
'/([lr])ves$/i' => '\1f', '/([lre])ves$/i' => '\1f',
'/([^fo])ves$/i' => '\1fe',
'/(tive)s$/i' => '\1', '/(tive)s$/i' => '\1',
'/(hive)s$/i' => '\1', '/(hive)s$/i' => '\1',
'/(drive)s$/i' => '\1', '/(drive)s$/i' => '\1',
'/([^fo])ves$/i' => '\1fe',
'/(^analy)ses$/i' => '\1sis', '/(^analy)ses$/i' => '\1sis',
'/(analy|diagno|^ba|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => '\1\2sis', '/(analy|diagno|^ba|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => '\1\2sis',
'/([ti])a$/i' => '\1um', '/([ti])a$/i' => '\1um',