public static MatchElementInfo LoadElementInfo(AbstractSkriptPatternElement patternElement) { int index; var type = patternElement.ToElementType(); switch (patternElement?.Parent) { case null: return(new MatchElementInfo { Index = -1, Type = ElementType.None }); case SkriptPattern skP: index = skP.Children.Where(c => patternElement.GetType().IsInstanceOfType(c)).ToList() .IndexOf(patternElement); break; default: return(LoadElementInfo(patternElement.Parent)); } return(new MatchElementInfo { Type = type, Index = index }); }
public static ElementType ToElementType(this AbstractSkriptPatternElement value) { switch (value) { case ChoicePatternElement _: return(ElementType.Choice); case OptionalPatternElement _: return(ElementType.Optional); case RegexMatchPatternElement _: return(ElementType.Regex); case TypePatternElement _: return(ElementType.Type); default: return(ElementType.None); } }
public ChoiceGroupElement(AbstractSkriptPatternElement element, int mark = 0) { Element = element; ParseMark = mark; }