Exemplo n.º 1
0
        private static CyrResult DeclineIgnoreSuffix(CyrPhrase decliner, string phrase, params string[] ignoreSuffixesStart)
        {
            int openSymbolIndex = phrase.IndexOfAny(ignoreSuffixesStart);

            if (openSymbolIndex == -1)
            {
                return(CaseTools.Decline(decliner, phrase));
            }

            string parenthesisExpr       = phrase.Substring(openSymbolIndex, phrase.Length - openSymbolIndex);
            string parenthesisLessPhrase = phrase.Remove(openSymbolIndex, phrase.Length - openSymbolIndex);

            CyrResult result = CaseTools.Decline(decliner, parenthesisLessPhrase);

            if (result == null)
            {
                return(null);
            }

            foreach (CasesEnum labelCase in Enum.GetValues(typeof(CasesEnum)))
            {
                result.Set(labelCase, result.Get(labelCase) + parenthesisExpr);
            }

            return(result);
        }
Exemplo n.º 2
0
        private static PluralPair PluralizeIgnoreSuffix(CyrPhrase decliner, string phrase, params string[] ignoreSuffixesStart)
        {
            int ignoredTailStart = phrase.IndexOfAny(ignoreSuffixesStart);

            if (ignoredTailStart == -1)
            {
                CyrResult declinedPhrase = CaseTools.DeclinePlural(decliner, phrase);
                return(declinedPhrase == null ? null : new PluralPair(phrase, declinedPhrase.Nominative));
            }

            string ignoredSuffix = phrase.Substring(ignoredTailStart, phrase.Length - ignoredTailStart);
            string head          = phrase.Remove(ignoredTailStart, phrase.Length - ignoredTailStart);

            CyrResult declinedHead = CaseTools.DeclinePlural(decliner, head);

            return(declinedHead == null ? null : new PluralPair(phrase, declinedHead.Nominative + ignoredSuffix));
        }