public void ChoicePatternMatches(string toMatch, int expectedParseMark)
        {
            var element = new ChoicePatternElement("one|1¦1");

            var result = element.Parse(toMatch);

            Assert.True(result.IsSuccess);
            Assert.Equal(expectedParseMark, result.ParseMark);
        }
Exemplo n.º 2
0
        public static SkriptPattern ConvertNounToPattern(string noun)
        {
            var pattern = new SkriptPattern();

            var(gender, singular, plural) = ExtractInformationFromNoun(noun);

            var singularPattern = new SkriptPattern();

            //Add singular gender into the singular literal if it exists
            if (!gender.IsEmpty())
            {
                singularPattern.Children.Add(new OptionalPatternElement
                {
                    Element = new ChoicePatternElement
                    {
                        Elements =
                        {
                            new ChoicePatternElement.ChoiceGroupElement(new LiteralPatternElement(gender + ' '),
                                                                        (int)EntityData.EntityTypeUsedValues.Gender)
                        }
                    }
                });
            }
            singularPattern.Children.Add(new LiteralPatternElement(singular));

            //Create final element
            var toAdd = new ChoicePatternElement
            {
                Elements = new List <ChoicePatternElement.ChoiceGroupElement>()
            };

            if (!plural.IsEmpty())
            {
                toAdd.Elements.Add(new ChoicePatternElement.ChoiceGroupElement(new LiteralPatternElement(plural),
                                                                               (int)EntityData.EntityTypeUsedValues.Plural));
            }

            toAdd.Elements.Add(
                new ChoicePatternElement.ChoiceGroupElement(singularPattern,
                                                            (int)EntityData.EntityTypeUsedValues.Singular)
                );

            pattern.Children.Add(toAdd);

            return(pattern);
        }
        private SkriptPattern ComputeAnnotationPattern()
        {
            var pattern = new SkriptPattern();

            pattern.Children.Add(new LiteralPatternElement("@"));
            var annotationsName = new ChoicePatternElement {
                SaveChoice = true
            };

            foreach (var key in Annotations.Keys)
            {
                annotationsName.Elements.Add(
                    new ChoicePatternElement.ChoiceGroupElement(new LiteralPatternElement(key)));
            }

            pattern.Children.Add(annotationsName);

            return(pattern);
        }