From 9d3e293c766fcec5372d0dc68358e186e0ddbc88 Mon Sep 17 00:00:00 2001 From: "mdomba (mdwork)" Date: Thu, 26 Jan 2012 13:14:02 +0100 Subject: [PATCH] added more rules for proper pluralization --- framework/util/Text.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/framework/util/Text.php b/framework/util/Text.php index 7ff7555..e2834ce 100644 --- a/framework/util/Text.php +++ b/framework/util/Text.php @@ -22,21 +22,33 @@ class Text { /** * Converts a word to its plural form. + * Note that this is for English only! + * For example, 'apple' will become 'apples', and 'child' will become 'children'. * @param string $name the word to be pluralized * @return string the pluralized word */ public static function pluralize($name) { $rules = array( + '/move$/i' => 'moves', + '/foot$/i' => 'feet', + '/child$/i' => 'children', + '/human$/i' => 'humans', + '/man$/i' => 'men', + '/tooth$/i' => 'teeth', + '/person$/i' => 'people', + '/([m|l])ouse$/i' => '\1ice', '/(x|ch|ss|sh|us|as|is|os)$/i' => '\1es', + '/([^aeiouy]|qu)y$/i' => '\1ies', '/(?:([^f])fe|([lr])f)$/i' => '\1\2ves', - '/(m)an$/i' => '\1en', - '/(child)$/i' => '\1ren', - '/(r)y$/i' => '\1ies', + '/(shea|lea|loa|thie)f$/i' => '\1ves', + '/([ti])um$/i' => '\1a', + '/(tomat|potat|ech|her|vet)o$/i' => '\1oes', + '/(bu)s$/i' => '\1ses', + '/(ax|test)is$/i' => '\1es', '/s$/' => 's', ); - foreach ($rules as $rule => $replacement) - { + foreach ($rules as $rule => $replacement) { if (preg_match($rule, $name)) { return preg_replace($rule, $replacement, $name); } @@ -65,6 +77,6 @@ class Text */ public static function name2id($name) { - return trim(strtolower(str_replace('_','-',preg_replace('/(?