public static GrammaticalResult FindMatchingAndReplace(this List <RuleTwoWords> rules, string text, GrammaticalCase toCaseType)
        {
            var result    = new GrammaticalResult(text, toCaseType);
            var newString = string.Empty;

            var parts = text.Split(' ');

            if (parts.Count() != 2)
            {
                return(result);
            }

            foreach (var rule in rules)
            {
                if (rule.FirstWordEnd.Length > parts[0].Length || rule.SecondWordEnd.Length > parts[1].Length)
                {
                    return(result);
                }

                var end       = parts[0].Substring(parts[0].Length - rule.FirstWordEnd.Length);
                var secondEnd = parts[1].Substring(parts[1].Length - rule.SecondWordEnd.Length);

                if (rule.FirstWordEnd == end && rule.SecondWordEnd == secondEnd)
                {
                    newString = parts[0].Remove(parts[0].Length - rule.FirstWordEnd.Length) + rule.FirstWordEndChange + " " + parts[1].Remove(parts[1].Length - rule.SecondWordEnd.Length) + rule.SecondWordEndChange;
                    return(result.Update(newString, GrammaticalCase.Locative));
                }
            }

            return(result);
        }
        public static GrammaticalResult ChangeCase(string text, GrammaticalCase toCaseType)
        {
            var result    = new GrammaticalResult(text, toCaseType);
            var newString = string.Empty;


            if (string.IsNullOrEmpty(text))
            {
                return(result);
            }
            if (text.Length < 2)
            {
                return(result);
            }

            //multiples
            if (text.Contains(' '))
            {
                var parts = text.Split(' ');
                //two-pronged
                if (parts.Count() == 2)
                {
                    if (toCaseType == GrammaticalCase.Locative)
                    {
                        var rules = RuleBuilder.LocativeRulesTwoWords;
                        return(rules.FindMatchingAndReplace(text, GrammaticalCase.Locative));
                    }
                }
            }
            else
            {
                if (toCaseType == GrammaticalCase.Locative)
                {
                    var rules = RuleBuilder.LocativeRules;
                    return(rules.FindMatchingAndReplace(text, GrammaticalCase.Locative));
                }
            }


            return(result);
        }
        public static GrammaticalResult FindMatchingAndReplace(this List <Rule> rules, string text, GrammaticalCase toCaseType)
        {
            var result    = new GrammaticalResult(text, toCaseType);
            var newString = string.Empty;


            foreach (var rule in rules)
            {
                if (rule.WordEnd.Length > text.Length)
                {
                    return(result);
                }

                var wordEnd = text.Substring(text.Length - rule.WordEnd.Length);
                if (rule.WordEnd.Equals(wordEnd))
                {
                    return(result.Update(text.Remove(text.Length - rule.WordEnd.Length) + rule.WordEndChange, toCaseType));
                }
            }



            return(result);
        }