| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- <?php namespace System;
 
- class Inflector {
 
-     /**
 
-      * The words that have been converted to singular.
 
-      *
 
-      * @var array
 
-      */
 
-     private static $singular_cache = array();
 
-     /**
 
-      * The words that have been converted to plural.
 
-      *
 
-      * @var array
 
-      */
 
-     private static $plural_cache = array();
 
- 	/**
 
- 	 * Plural word forms.
 
- 	 *
 
- 	 * @var array
 
- 	 */
 
- 	private static $plural = array(
 
-         '/(quiz)$/i' => "$1zes",
 
-         '/^(ox)$/i' => "$1en",
 
-         '/([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",
 
-         '/(shea|lea|loa|thie)f$/i' => "$1ves",
 
-         '/sis$/i' => "ses",
 
-         '/([ti])um$/i' => "$1a",
 
-         '/(tomat|potat|ech|her|vet)o$/i' => "$1oes",
 
-         '/(bu)s$/i' => "$1ses",
 
-         '/(alias)$/i' => "$1es",
 
-         '/(octop)us$/i' => "$1i",
 
-         '/(ax|test)is$/i' => "$1es",
 
-         '/(us)$/i' => "$1es",
 
-         '/s$/i' => "s",
 
-         '/$/' => "s"
 
-     );
 
-     /**
 
-      * Singular word forms.
 
-      *
 
-      * @var array
 
-      */
 
-     private static $singular = array(
 
-         '/(quiz)zes$/i' => "$1",
 
-         '/(matr)ices$/i' => "$1ix",
 
-         '/(vert|ind)ices$/i' => "$1ex",
 
-         '/^(ox)en$/i' => "$1",
 
-         '/(alias)es$/i' => "$1",
 
-         '/(octop|vir)i$/i' => "$1us",
 
-         '/(cris|ax|test)es$/i' => "$1is",
 
-         '/(shoe)s$/i' => "$1",
 
-         '/(o)es$/i' => "$1",
 
-         '/(bus)es$/i' => "$1",
 
-         '/([m|l])ice$/i' => "$1ouse",
 
-         '/(x|ch|ss|sh)es$/i' => "$1",
 
-         '/(m)ovies$/i' => "$1ovie",
 
-         '/(s)eries$/i' => "$1eries",
 
-         '/([^aeiouy]|qu)ies$/i' => "$1y",
 
-         '/([lr])ves$/i' => "$1f",
 
-         '/(tive)s$/i' => "$1",
 
-         '/(hive)s$/i' => "$1",
 
-         '/(li|wi|kni)ves$/i' => "$1fe",
 
-         '/(shea|loa|lea|thie)ves$/i' => "$1f",
 
-         '/(^analy)ses$/i' => "$1sis",
 
-         '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => "$1$2sis",
 
-         '/([ti])a$/i' => "$1um",
 
-         '/(n)ews$/i' => "$1ews",
 
-         '/(h|bl)ouses$/i' => "$1ouse",
 
-         '/(corpse)s$/i' => "$1",
 
-         '/(us)es$/i' => "$1",
 
-         '/(us|ss)$/i' => "$1",
 
-         '/s$/i' => "",
 
-     );
 
-     /**
 
-      * Irregular word forms.
 
-      *
 
-      * @var array
 
-      */
 
-     private static $irregular = array(
 
-         'move' => 'moves',
 
-         'foot' => 'feet',
 
-         'goose' => 'geese',
 
-         'sex' => 'sexes',
 
-         'child' => 'children',
 
-         'man' => 'men',
 
-         'tooth' => 'teeth',
 
-         'person' => 'people',
 
-     );
 
-     /**
 
-      * Uncountable word forms.
 
-      *
 
-      * @var array
 
-      */
 
-     private static $uncountable = array(
 
-         'sheep',
 
-         'fish',
 
-         'deer',
 
-         'series',
 
-         'species',
 
-         'money',
 
-         'rice',
 
-         'information',
 
-         'equipment',
 
-     );
 
- 	/**
 
- 	 * Convert a word to its plural form.
 
- 	 *
 
- 	 * @param  string  $value
 
- 	 * @return string
 
- 	 */
 
- 	public static function plural($value)
 
- 	{
 
-         if (array_key_exists($value, static::$plural_cache))
 
-         {
 
-            return static::$plural_cache[$value];
 
-         }
 
-         if (in_array(strtolower($value), static::$uncountable))
 
-         {
 
-         	return static::$plural_cache[$value] = $value;
 
-         }
 
-         foreach (static::$irregular as $pattern => $irregular)
 
-         {
 
-             $pattern = '/'.$pattern.'$/i';
 
-             if (preg_match($pattern, $value))
 
-             {
 
-         		return static::$plural_cache[$value] = preg_replace($pattern, $irregular, $value);
 
-             }
 
-         }
 
-         foreach (static::$plural as $pattern => $plural)
 
-         {
 
-             if (preg_match($pattern, $value))
 
-             {
 
-         		return static::$plural_cache[$value] = preg_replace($pattern, $plural, $value);
 
-             }
 
-         }
 
-         return static::$plural_cache[$value] = $value;
 
- 	}
 
- 	/**
 
- 	 * Convert a word to its singular form.
 
- 	 *
 
- 	 * @param  string  $value
 
- 	 * @return string
 
- 	 */
 
- 	public static function singular($value)
 
- 	{
 
-         if (array_key_exists($value, static::$singular_cache))
 
-         {
 
-            return static::$singular_cache[$value];
 
-         }
 
-         if (in_array(strtolower($value), static::$uncountable))
 
-         {
 
-         	return static::$singular_cache[$value] = $value;
 
-         }
 
-         foreach (static::$irregular as $irregular => $pattern)
 
-         {
 
-             $pattern = '/'.$pattern.'$/i';
 
-             if (preg_match($pattern, $value))
 
-             {
 
- 				return static::$singular_cache[$value] = preg_replace($pattern, $irregular, $value);
 
-             }
 
-         }
 
-         foreach (static::$singular as $pattern => $singular)
 
-         {
 
-             if (preg_match($pattern, $value))
 
-             {
 
- 				return static::$singular_cache[$value] = preg_replace($pattern, $singular, $value);
 
-             }
 
-         }
 
-         return static::$singular_cache[$value] = $value;
 
- 	}
 
- 	/**
 
- 	 * Get the plural form of a word if the count is greater than zero.
 
- 	 *
 
- 	 * @param  string  $value
 
- 	 * @param  int     $count
 
- 	 * @return string
 
- 	 */
 
- 	public static function plural_if($value, $count)
 
- 	{
 
- 		return ($count > 1) ? static::plural($value) : $value;
 
- 	}
 
- }
 
 
  |