Browse Source

Make words ending in data uninflected.

Since both metadata and word ending in metadata have caused issues in
the past, uninflecting them seems like the best option. This will also
cover cases like ProfileData not being inflected to ProfileDatum which
seems like an improvement to me.

Fixes #4419
mark_story 11 years ago
parent
commit
c26b381469
2 changed files with 6 additions and 2 deletions
  1. 2 0
      lib/Cake/Test/Case/Utility/InflectorTest.php
  2. 4 2
      lib/Cake/Utility/Inflector.php

+ 2 - 0
lib/Cake/Test/Case/Utility/InflectorTest.php

@@ -176,6 +176,7 @@ class InflectorTest extends CakeTestCase {
 		$this->assertEquals(Inflector::singularize('curves'), 'curve');
 		$this->assertEquals(Inflector::singularize('body_curves'), 'body_curve');
 		$this->assertEquals(Inflector::singularize('metadata'), 'metadata');
+		$this->assertEquals(Inflector::singularize('files_metadata'), 'files_metadata');
 		$this->assertEquals(Inflector::singularize(''), '');
 	}
 
@@ -241,6 +242,7 @@ class InflectorTest extends CakeTestCase {
 		$this->assertEquals(Inflector::pluralize('curve'), 'curves');
 		$this->assertEquals(Inflector::pluralize('body_curve'), 'body_curves');
 		$this->assertEquals(Inflector::pluralize('metadata'), 'metadata');
+		$this->assertEquals(Inflector::pluralize('files_metadata'), 'files_metadata');
 		$this->assertEquals(Inflector::pluralize('stadia'), 'stadia');
 		$this->assertEquals(Inflector::pluralize(''), '');
 	}

+ 4 - 2
lib/Cake/Utility/Inflector.php

@@ -32,7 +32,7 @@ class Inflector {
  */
 	protected static $_plural = array(
 		'rules' => array(
-			'/(s)tatus$/i' => '\1\2tatuses',
+			'/(s)tatus$/i' => '\1tatuses',
 			'/(quiz)$/i' => '\1zes',
 			'/^(ox)$/i' => '\1\2en',
 			'/([m|l])ouse$/i' => '\1ice',
@@ -57,6 +57,7 @@ class Inflector {
 		),
 		'uninflected' => array(
 			'.*[nrlm]ese',
+			'.*data',
 			'.*deer',
 			'.*fish',
 			'.*measles',
@@ -152,6 +153,7 @@ class Inflector {
 			'/s$/i' => ''
 		),
 		'uninflected' => array(
+			'.*data',
 			'.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox', '.*sheep', '.*ss', 'feedback'
 		),
 		'irregular' => array(
@@ -171,7 +173,7 @@ class Inflector {
 		'Foochowese', 'gallows', 'Genevese', 'Genoese', 'Gilbertese', 'graffiti',
 		'headquarters', 'herpes', 'hijinks', 'Hottentotese', 'information', 'innings',
 		'jackanapes', 'Kiplingese', 'Kongoese', 'Lucchese', 'mackerel', 'Maltese', '.*?media',
-		'metadata', 'mews', 'moose', 'mumps', 'Nankingese', 'news', 'nexus', 'Niasese',
+		'mews', 'moose', 'mumps', 'Nankingese', 'news', 'nexus', 'Niasese',
 		'Pekingese', 'Piedmontese', 'pincers', 'Pistoiese', 'pliers', 'Portuguese',
 		'proceedings', 'rabies', 'research', 'rice', 'rhinoceros', 'salmon', 'Sarawakese', 'scissors',
 		'sea[- ]bass', 'series', 'Shavese', 'shears', 'siemens', 'species', 'swine', 'testes',