Exemple #1
0
        /**
         * # single line
         *
         * #<optional>#
         * block comments
         * #<optional>#
         */

        public static bool Scan(TextInputRange range)
        {
            if (range.EndChar != '#')
            {
                return(false);
            }
            do
            {
                range.Extend();
            } while (range.IsEndValid && !range.IsEndNewline && !range.IsEndWhitespace && range.EndChar != '#');

            // single line comment
            if (range.IsEndNewline)
            {
                return(true);
            }

            // is block comment
            if (range.EndChar == '#')
            {
                range.Extend();
                var commentMarker = range.Text;

                while (range.IsEndValid && range.EndString(commentMarker.Length) != commentMarker)
                {
                    if (range.IsEndNewline)
                    {
                        range.NewLine();
                    }
                    else
                    {
                        range.Extend();
                    }
                }

                if (range.EndString(commentMarker.Length) != commentMarker)
                {
                    throw new Exception(message: "Line Comment not Escaped.");
                }
                range.Extend(commentMarker.Length);
            }
            else
            {
                do
                {
                    range.Extend();
                } while (range.IsEndValid && !range.IsEndNewline);
            }
            return(true);
        }
        public void EndStringTest()
        {
            var input = new TextInputRange {
                File = new TextFile {
                    Content  = "ABC",
                    Filename = ""
                }
            };
            var s = input.EndString(nChars: 4);

            Assert.AreEqual(expected: "ABC", actual: s);
        }