Beispiel #1
0
            public string Middlename(string name, CASES gcase)
            {
                var middlename = (from r in (RULES as YamlMappingNode).Children
                                  where (r.Key as YamlScalarNode).Value.Equals("middlename")
                                  select r).FirstOrDefault().Value;

                return Inflect(name, gcase, middlename);
            }
Beispiel #2
0
            protected string ModificatorFor(CASES gcase, YamlNode rule)
            {
                var mods = (from r in (rule as YamlMappingNode).Children
                         where (r.Key as YamlScalarNode).Value.Equals("mods")
                         select r).FirstOrDefault().Value;

                switch (gcase)
                {
                    case CASES.NOMINATIVE:
                        return ".";
                    case CASES.GENITIVE:
                        return ((mods as YamlSequenceNode).Children[0] as YamlScalarNode).Value;
                    case CASES.DATIVE:
                        return ((mods as YamlSequenceNode).Children[1] as YamlScalarNode).Value;
                    case CASES.ACCUSATIVE:
                        return ((mods as YamlSequenceNode).Children[2] as YamlScalarNode).Value;
                    case CASES.INSTRUMENTAL:
                        return ((mods as YamlSequenceNode).Children[3] as YamlScalarNode).Value;
                    case CASES.PREPOSITIONAL:
                        return ((mods as YamlSequenceNode).Children[4] as YamlScalarNode).Value;
                    default:
                        throw new UnknownCaseException(string.Format("Unknown grammatic case: {0}", gcase));
                }
            }
Beispiel #3
0
            protected string FindAndApply(string name, CASES gcase, YamlNode rules, bool[] features)
            {
                try
                {
                    YamlNode rule = FindFor(name, rules, features);

                    return Apply(name, gcase, rule);
                }
                catch (UnknownRuleException ex)
                {
                    return name;
                }
            }
Beispiel #4
0
            protected string Apply(string name, CASES gcase, YamlNode rule)
            {
                foreach (char c in ModificatorFor(gcase, rule))
                {
                    switch (c)
                    {
                        case '.':
                            break;
                        case '-':
                            name = name.Substring(0, name.Length - 1);
                            break;
                        default:
                            name += c;
                            break;
                    }
                }

                return name;
            }
Beispiel #5
0
            protected string Inflect(string name, CASES gcase, YamlNode rules)
            {
                int i = 0;

                string[] parts = name.Split('-');

                for (int y = 0; y < parts.Length; y++)
                {
                    bool firstWord = (i += 1) == 1 && parts.Length > 1;

                    parts[y] = FindAndApply(parts[y], gcase, rules, new bool[] { firstWord });
                }

                return string.Join("-", parts);
            }
Beispiel #6
0
 public string Middlename(string name, CASES gcase)
 {
     return new Rules(this._gender).Middlename(name, gcase);
 }
Beispiel #7
0
 public string Firstname(string name, CASES gcase)
 {
     return new Rules(this._gender).Firstname(name, gcase);
 }