mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-09-05 11:02:40 +00:00
Fixes #3486, Incorrect rule in Inflector::singularize()
Added additional test for Inflector git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@5957 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
1e1c49025a
commit
e48e49073b
2 changed files with 115 additions and 19 deletions
|
@ -76,24 +76,24 @@ class Inflector extends Object {
|
|||
$_this =& Inflector::getInstance();
|
||||
$corePluralRules = array('/(s)tatus$/i' => '\1\2tatuses',
|
||||
'/(quiz)$/i' => '\1zes',
|
||||
'/^(ox)$/i' => '\1\2en', # ox
|
||||
'/([m|l])ouse$/i' => '\1ice', # mouse, louse
|
||||
'/(matr|vert|ind)(ix|ex)$/i' => '\1ices', # matrix, vertex, index
|
||||
'/(x|ch|ss|sh)$/i' => '\1es', # search, switch, fix, box, process, address
|
||||
'/([^aeiouy]|qu)y$/i' => '\1ies', # query, ability, agency
|
||||
'/(hive)$/i' => '\1s', # archive, hive
|
||||
'/(?:([^f])fe|([lr])f)$/i' => '\1\2ves', # half, safe, wife
|
||||
'/sis$/i' => 'ses', # basis, diagnosis
|
||||
'/([ti])um$/i' => '\1a', # datum, medium
|
||||
'/(p)erson$/i' => '\1eople', # person, salesperson
|
||||
'/(m)an$/i' => '\1en', # man, woman, spokesman
|
||||
'/(c)hild$/i' => '\1hildren', # child
|
||||
'/(buffal|tomat)o$/i' => '\1\2oes', # buffalo, tomato
|
||||
'/us$/' => 'uses', # us
|
||||
'/(alias)$/i' => '\1es', # alias
|
||||
'/(octop|vir)us$/i' => '\1i', # octopus, virus - virus has no defined plural (according to Latin/dictionary.com), but viri is better than viruses/viruss
|
||||
'/(ax|cri|test)is$/i' => '\1es', # axis, crisis
|
||||
'/s$/' => 's', # no change (compatibility)
|
||||
'/^(ox)$/i' => '\1\2en',
|
||||
'/([m|l])ouse$/i' => '\1ice',
|
||||
'/(matr|vert|ind)(ix|ex)$/i' => '\1ices',
|
||||
'/(x|ch|ss|sh)$/i' => '\1es',
|
||||
'/([^aeiouy]|qu)y$/i' => '\1ies',
|
||||
'/(hive)$/i' => '\1s',
|
||||
'/(?:([^f])fe|([lr])f)$/i' => '\1\2ves',
|
||||
'/sis$/i' => 'ses',
|
||||
'/([ti])um$/i' => '\1a',
|
||||
'/(p)erson$/i' => '\1eople',
|
||||
'/(m)an$/i' => '\1en',
|
||||
'/(c)hild$/i' => '\1hildren',
|
||||
'/(buffal|tomat)o$/i' => '\1\2oes',
|
||||
'/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|vir)us$/i' => '\1i',
|
||||
'/us$/' => 'uses',
|
||||
'/(alias)$/i' => '\1es',
|
||||
'/(ax|cri|test)is$/i' => '\1es',
|
||||
'/s$/' => 's',
|
||||
'/$/' => 's',);
|
||||
|
||||
$coreUninflectedPlural = array('.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox', '.*sheep', 'Amoyese',
|
||||
|
@ -211,7 +211,7 @@ class Inflector extends Object {
|
|||
'/(vert|ind)ices$/i' => '\1ex',
|
||||
'/^(ox)en/i' => '\1',
|
||||
'/(alias)(es)*$/i' => '\1',
|
||||
'/([octop|vir])i$/i' => '\1us',
|
||||
'/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|viri?)i$/i' => '\1us',
|
||||
'/(cris|ax|test)es$/i' => '\1is',
|
||||
'/(shoe)s$/i' => '\1',
|
||||
'/(o)es$/i' => '\1',
|
||||
|
|
|
@ -109,6 +109,54 @@ class InflectorTest extends UnitTestCase {
|
|||
$result = $this->Inflector->singularize('Media');
|
||||
$expected = 'Media';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('alumni');
|
||||
$expected = 'alumnus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('bacilli');
|
||||
$expected = 'bacillus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('cacti');
|
||||
$expected = 'cactus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('foci');
|
||||
$expected = 'focus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('fungi');
|
||||
$expected = 'fungus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('nuclei');
|
||||
$expected = 'nucleus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('octopuses');
|
||||
$expected = 'octopus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('radii');
|
||||
$expected = 'radius';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('stimuli');
|
||||
$expected = 'stimulus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('syllabi');
|
||||
$expected = 'syllabus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('termini');
|
||||
$expected = 'terminus';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->singularize('viri');
|
||||
$expected = 'virus';
|
||||
$this->assertEqual($result, $expected);
|
||||
}
|
||||
|
||||
function testInflectingPlurals() {
|
||||
|
@ -179,6 +227,54 @@ class InflectorTest extends UnitTestCase {
|
|||
$result = $this->Inflector->pluralize('Media');
|
||||
$expected = 'Media';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('alumnus');
|
||||
$expected = 'alumni';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('bacillus');
|
||||
$expected = 'bacilli';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('cactus');
|
||||
$expected = 'cacti';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('focus');
|
||||
$expected = 'foci';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('fungus');
|
||||
$expected = 'fungi';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('nucleus');
|
||||
$expected = 'nuclei';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('octopus');
|
||||
$expected = 'octopuses';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('radius');
|
||||
$expected = 'radii';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('stimulus');
|
||||
$expected = 'stimuli';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('syllabus');
|
||||
$expected = 'syllabi';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('terminus');
|
||||
$expected = 'termini';
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$result = $this->Inflector->pluralize('virus');
|
||||
$expected = 'viri';
|
||||
$this->assertEqual($result, $expected);
|
||||
}
|
||||
|
||||
function testInflectorSlug() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue