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); }
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); }