예제 #1
0
        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
            });
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
 public ChoiceGroupElement(AbstractSkriptPatternElement element, int mark = 0)
 {
     Element   = element;
     ParseMark = mark;
 }