Changeset 28182 for trunk/include/inflectors/en.php
- Timestamp:
- Apr 14, 2014, 11:33:51 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/inflectors/en.php
r27884 r28182 39 39 'mouse' => 'mice', 40 40 'ox' => 'oxen', 41 'zombie' => 'zombies', 41 'zombie' => 'zombies', // pl->sg exc. 42 'serie' => 'series', // pl->sg exc. 43 'movie' => 'movies', // pl->sg exc. 42 44 ); 43 45 … … 72 74 '/s$/' => '', 73 75 '/(ss)$/' => '\1', 74 '/(n)ews$/' => '\1ews',75 76 '/([ti])a$/' => '\1um', 76 77 '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$/' => '\1sis', … … 81 82 '/([lr])ves$/' => '\1f', 82 83 '/([^aeiouy]|qu)ies$/' => '\1y', 83 '/(s)eries$/' => '\1eries',84 '/(m)ovies$/' => '\1ovie',85 84 '/(x|ch|ss|sh)es$/' => '\1', 86 85 '/(bus)(es)?$/' => '\1', … … 95 94 '/(database)s$/' => '\1', 96 95 )); 96 97 $this->er2ing = array_reverse(array( 98 '/ers?$/' => 'ing', 99 '/((be|riv)ers?)$/' => '\1' 100 )); 101 102 $this->ing2er = array_reverse(array( 103 '/ing$/' => 'er', 104 '/(being)$/' => '\1' 105 )); 106 97 107 } 98 108 … … 101 111 $res = array(); 102 112 103 $ word = strtolower($word);113 $lword = strtolower($word); 104 114 105 $rc = @$this->exceptions[$ word];115 $rc = @$this->exceptions[$lword]; 106 116 if ( isset($rc) ) 107 117 { … … 111 121 } 112 122 113 foreach ($this->pluralizers as $rule => $replacement) 123 self::run($this->pluralizers, $word, $res); 124 self::run($this->singularizers, $word, $res); 125 self::run($this->er2ing, $word, $res); 126 $rc = self::run($this->ing2er, $word, $res); 127 if ($rc !== false) 114 128 { 115 $rc = preg_replace($rule, $replacement, $word, -1, $count); 129 self::run($this->pluralizers, $rc, $res); 130 } 131 return $res; 132 } 133 134 private static function run($rules, $word, &$res) 135 { 136 foreach ($rules as $rule => $replacement) 137 { 138 $rc = preg_replace($rule.'i', $replacement, $word, -1, $count); 116 139 if ($count) 117 140 { 118 141 $res[] = $rc; 119 break;142 return $rc; 120 143 } 121 144 } 122 123 foreach ($this->singularizers as $rule => $replacement) 124 { 125 $rc = preg_replace($rule, $replacement, $word, -1, $count); 126 if ($count) 127 { 128 $res[] = $rc; 129 break; 130 } 131 } 132 133 return $res; 145 return false; 134 146 } 135 147 }
Note: See TracChangeset
for help on using the changeset viewer.