コード例 #1
0
 private bool IsUninflective(string word)
 {
     //EDesignUtil.CheckArgumentNull<string>(word, "word");
     if (!PluralizationServiceUtil.DoesWordContainSuffix(word, _uninflectiveSuffixList, _culture) && (word.ToLower(_culture).Equals(word) || !word.EndsWith("ese", false, _culture)) && !_uninflectiveWordList.Contains <string>(word.ToLowerInvariant()))
     {
         return(false);
     }
     return(true);
 }
コード例 #2
0
        // *******************************************************************

        /// <summary>
        /// This method performs an action if a word contains a specific suffix.
        /// </summary>
        /// <param name="word">The word to use for the operation.</param>
        /// <param name="suffixes">A list of suffixes to check for.</param>
        /// <param name="operationOnWord">The action to be performed.</param>
        /// <param name="culture">A culture to use for the operation.</param>
        /// <param name="newWord">The results of the operation.</param>
        /// <returns>True if the operation succeeded; false otherwise.</returns>
        public static bool TryInflectOnSuffixInWord(
            string word,
            IEnumerable <string> suffixes,
            Func <string, string> operationOnWord,
            CultureInfo culture,
            out string newWord
            )
        {
            newWord = null;
            if (!PluralizationServiceUtil.DoesWordContainSuffix(word, suffixes, culture))
            {
                return(false);
            }
            newWord = operationOnWord(word);
            return(true);
        }
コード例 #3
0
        private string InternalSingularize(string word)
        {
            string str;
            string str1;

            if (_userDictionary.ExistsInSecond(word))
            {
                return(_userDictionary.GetFirstValue(word));
            }
            if (IsNoOpWord(word))
            {
                return(word);
            }
            string suffixWord = GetSuffixWord(word, out str);

            if (IsNoOpWord(suffixWord))
            {
                return(string.Concat(str, suffixWord));
            }
            if (IsUninflective(suffixWord))
            {
                return(string.Concat(str, suffixWord));
            }
            if (_knownSingluarWords.Contains(suffixWord.ToLowerInvariant()))
            {
                return(string.Concat(str, suffixWord));
            }
            if (_irregularVerbPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _irregularVerbPluralizationService.GetFirstValue(suffixWord)));
            }
            if (_irregularPluralsPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _irregularPluralsPluralizationService.GetFirstValue(suffixWord)));
            }
            if (_wordsEndingWithSisPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _wordsEndingWithSisPluralizationService.GetFirstValue(suffixWord)));
            }
            if (_wordsEndingWithSePluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _wordsEndingWithSePluralizationService.GetFirstValue(suffixWord)));
            }
            if (_wordsEndingWithSusPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _wordsEndingWithSusPluralizationService.GetFirstValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "men"
            }, (string s) => string.Concat(s.Remove(s.Length - 2, 2), "an"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "lice",
                "mice"
            }, (string s) => string.Concat(s.Remove(s.Length - 3, 3), "ouse"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "teeth"
            }, (string s) => string.Concat(s.Remove(s.Length - 4, 4), "ooth"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "geese"
            }, (string s) => string.Concat(s.Remove(s.Length - 4, 4), "oose"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "feet"
            }, (string s) => string.Concat(s.Remove(s.Length - 3, 3), "oot"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "zoa"
            }, (string s) => string.Concat(s.Remove(s.Length - 2, 2), "oon"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "ches",
                "shes",
                "sses"
            }, (string s) => s.Remove(s.Length - 2, 2), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (_assimilatedClassicalInflectionPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _assimilatedClassicalInflectionPluralizationService.GetFirstValue(suffixWord)));
            }
            if (_classicalInflectionPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _classicalInflectionPluralizationService.GetFirstValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "trices"
            }, (string s) => string.Concat(s.Remove(s.Length - 3, 3), "x"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "eaux",
                "ieux"
            }, (string s) => s.Remove(s.Length - 1, 1), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (_wordsEndingWithInxAnxYnxPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _wordsEndingWithInxAnxYnxPluralizationService.GetFirstValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "alves",
                "elves",
                "olves",
                "eaves",
                "arves"
            }, (string s) => string.Concat(s.Remove(s.Length - 3, 3), "f"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "nives",
                "lives",
                "wives"
            }, (string s) => string.Concat(s.Remove(s.Length - 3, 3), "fe"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "ays",
                "eys",
                "iys",
                "oys",
                "uys"
            }, (string s) => s.Remove(s.Length - 1, 1), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (suffixWord.EndsWith("ies", true, _culture))
            {
                return(string.Concat(str, suffixWord.Remove(suffixWord.Length - 3, 3), "y"));
            }
            if (_oSuffixPluralizationService.ExistsInSecond(suffixWord))
            {
                return(string.Concat(str, _oSuffixPluralizationService.GetFirstValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "aos",
                "eos",
                "ios",
                "oos",
                "uos"
            }, (string s) => suffixWord.Remove(suffixWord.Length - 1, 1), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "ces"
            }, (string s) => s.Remove(s.Length - 1, 1), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "ces",
                "ses",
                "xes"
            }, (string s) => s.Remove(s.Length - 2, 2), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (suffixWord.EndsWith("oes", true, _culture))
            {
                return(string.Concat(str, suffixWord.Remove(suffixWord.Length - 2, 2)));
            }
            if (suffixWord.EndsWith("ss", true, _culture))
            {
                return(string.Concat(str, suffixWord));
            }
            if (!suffixWord.EndsWith("s", true, _culture))
            {
                return(string.Concat(str, suffixWord));
            }
            return(string.Concat(str, suffixWord.Remove(suffixWord.Length - 1, 1)));
        }
コード例 #4
0
        private string InternalPluralize(string word)
        {
            string str;
            string str1;

            if (_userDictionary.ExistsInFirst(word))
            {
                return(_userDictionary.GetSecondValue(word));
            }
            if (IsNoOpWord(word))
            {
                return(word);
            }
            string suffixWord = GetSuffixWord(word, out str);

            if (IsNoOpWord(suffixWord))
            {
                return(string.Concat(str, suffixWord));
            }
            if (IsUninflective(suffixWord))
            {
                return(string.Concat(str, suffixWord));
            }
            if (_knownPluralWords.Contains(suffixWord.ToLowerInvariant()) || IsPlural(suffixWord))
            {
                return(string.Concat(str, suffixWord));
            }
            if (_irregularPluralsPluralizationService.ExistsInFirst(suffixWord))
            {
                return(string.Concat(str, _irregularPluralsPluralizationService.GetSecondValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "man"
            }, (string s) => string.Concat(s.Remove(s.Length - 2, 2), "en"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "louse",
                "mouse"
            }, (string s) => string.Concat(s.Remove(s.Length - 4, 4), "ice"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "tooth"
            }, (string s) => string.Concat(s.Remove(s.Length - 4, 4), "eeth"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "goose"
            }, (string s) => string.Concat(s.Remove(s.Length - 4, 4), "eese"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "foot"
            }, (string s) => string.Concat(s.Remove(s.Length - 3, 3), "eet"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "zoon"
            }, (string s) => string.Concat(s.Remove(s.Length - 3, 3), "oa"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "cis",
                "sis",
                "xis"
            }, (string s) => string.Concat(s.Remove(s.Length - 2, 2), "es"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (_assimilatedClassicalInflectionPluralizationService.ExistsInFirst(suffixWord))
            {
                return(string.Concat(str, _assimilatedClassicalInflectionPluralizationService.GetSecondValue(suffixWord)));
            }
            if (_classicalInflectionPluralizationService.ExistsInFirst(suffixWord))
            {
                return(string.Concat(str, _classicalInflectionPluralizationService.GetSecondValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "trix"
            }, (string s) => string.Concat(s.Remove(s.Length - 1, 1), "ces"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "eau",
                "ieu"
            }, (string s) => string.Concat(s, "x"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (_wordsEndingWithInxAnxYnxPluralizationService.ExistsInFirst(suffixWord))
            {
                return(string.Concat(str, _wordsEndingWithInxAnxYnxPluralizationService.GetSecondValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "ch",
                "sh",
                "ss"
            }, (string s) => string.Concat(s, "es"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "alf",
                "elf",
                "olf",
                "eaf",
                "arf"
            }, (string s) => {
                if (s.EndsWith("deaf", true, _culture))
                {
                    return(s);
                }
                return(string.Concat(s.Remove(s.Length - 1, 1), "ves"));
            }, _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "nife",
                "life",
                "wife"
            }, (string s) => string.Concat(s.Remove(s.Length - 2, 2), "ves"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "ay",
                "ey",
                "iy",
                "oy",
                "uy"
            }, (string s) => string.Concat(s, "s"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (suffixWord.EndsWith("y", true, _culture))
            {
                return(string.Concat(str, suffixWord.Remove(suffixWord.Length - 1, 1), "ies"));
            }
            if (_oSuffixPluralizationService.ExistsInFirst(suffixWord))
            {
                return(string.Concat(str, _oSuffixPluralizationService.GetSecondValue(suffixWord)));
            }
            if (PluralizationServiceUtil.TryInflectOnSuffixInWord(suffixWord, new List <string>()
            {
                "ao",
                "eo",
                "io",
                "oo",
                "uo"
            }, (string s) => string.Concat(s, "s"), _culture, out str1))
            {
                return(string.Concat(str, str1));
            }
            if (suffixWord.EndsWith("o", true, _culture) || suffixWord.EndsWith("s", true, _culture))
            {
                return(string.Concat(str, suffixWord, "es"));
            }
            if (suffixWord.EndsWith("x", true, _culture))
            {
                return(string.Concat(str, suffixWord, "es"));
            }
            return(string.Concat(str, suffixWord, "s"));
        }