public void IntBackrefMatch1()
        {
            var array   = new int[] { 6, 5, 3, 6, 7, 4, 2, 3, 4, 5, 8 };
            var pattern = Seq(AnyElement.WithId(0), Pred((n, groups) => n == groups[0].Elements[0] + 1));

            var match = pattern.FindMatchesIn(array).ToList();

            match.Count.ShouldBe(3);
            match[0].Elements.ShouldBe(new int[] { 6, 7 });
            match[1].Elements.ShouldBe(new int[] { 2, 3 });
            match[2].Elements.ShouldBe(new int[] { 4, 5 });
        }
Ejemplo n.º 2
0
        public override Verb CreateVerb(string[] tokens)
        {
            Color(position, length, Operators);
            var type = tokens[1];
            var text = tokens[2];

            switch (text.ToLower().Substring(1))
            {
            case "s":
                text = STRING_SPACES;
                break;

            case "w":
                text = STRING_WORDS;
                break;

            case "d":
                text = STRING_DIGITS;
                break;

            case "p":
                text = STRING_PUNCT;
                break;

            case "a":
                text = STRING_LETTERS;
                break;

            case "t":
                text = STRING_TAB;
                break;

            case "rn":
                text = STRING_CRLF;
                break;

            case "r":
                text = STRING_CR;
                break;

            case "n":
                text = STRING_LF;
                break;

            case "u":
                text = STRING_UPPER;
                break;

            case "l":
                text = STRING_LOWER;
                break;

            case "v":
                text = STRING_VOWELS;
                break;

            case "uv":
                text = STRING_UVOWELS;
                break;

            case "lv":
                text = STRING_LVOWELS;
                break;

            case "uc":
                text = STRING_UCONSONANTS;
                break;

            case "lc":
                text = STRING_LCONSONANTS;
                break;

            case "q":
                text = STRING_QUOTES;
                break;

            default:
                return(null);
            }

            switch (type)
            {
            case "+":
                Element = new SpanElement(text);
                break;

            case "-":
                Element = new BreakElement(text);
                break;

            case "++":
                Element = new MSpanElement(text);
                break;

            case "--":
                Element = new MBreakElement(text);
                break;

            case "":
                Element = new AnyElement(text, 1);
                break;

            default:
                if (text.IsNumeric())
                {
                    Element = new AnyElement(text, text.ToInt());
                }
                else
                {
                    return(null);
                }

                break;
            }

            return(new NullOp());
        }