public void OptionalPatternAlwaysMatches() { var element = new OptionalPatternElement("b"); Assert.True(element.Parse("a").IsSuccess); Assert.True(element.Parse("a").IsOptionallyMatched); }
private static void AddSectionEnding() { var sectionNodeAttribute = typeof(T).GetCustomAttribute <SectionNodeAttribute>(); if (sectionNodeAttribute != null) { AbstractSkriptPatternElement section = new LiteralPatternElement(":"); if (sectionNodeAttribute.Optional) { section = new OptionalPatternElement { Element = section }; } ExpressionPattern.Children.Add(section); } }
public void LoadPatterns() { Events.ForEach(e => e.LoadPatterns()); var optionalOn = new OptionalPatternElement { Element = new LiteralPatternElement("on ") }; Events.ForEach(e => { if (e.PatternNodes.Length <= 0) { return; } foreach (var node in e.PatternNodes) { node.Children.Insert(0, optionalOn); } }); Types.ForEach(e => e.LoadPatterns()); Effects.ForEach(e => e.LoadPatterns()); var types = Enum.GetValues(typeof(ExpressionType)).Cast <ExpressionType>().ToList(); foreach (var expr in InnerExpressions) { if (Managers.SkriptTypesManager.BannedClassNames.Contains(expr.ClassName)) { continue; } var typeOrdinal = (int)expr.ExpressionType; for (var i = typeOrdinal + 1; i < types.Count; i++) { _expressionTypesStartIndices[i]++; } Expressions.Insert(_expressionTypesStartIndices[typeOrdinal], expr); } Expressions.ForEach(e => e.LoadPatterns()); Conditions.ForEach(e => e.LoadPatterns()); }
public void OptionalPatternRenderIsCorrect() { var element = new OptionalPatternElement("abc"); Assert.Equal("[abc]", element.RenderPattern()); }