Exemple #1
0
        public Node line()
        {
            if(consumeIf("\n"))
                return new TextNode("");
            if (input.eof())
                return new TextNode("");
            var res = new CompositeNode();
            res.add(fragment());
            if (nextIs("<http://"))
            {
                consume(1);
                res.add(link());
            }
            else if (consumeIf("<"))
                res.add(tag());
            else if (consumeIf("``"))
                res.add(code("``"));
            else if (consumeIf("`"))
                res.add(code("`"));
            res.add(line());

            return res;
        }
Exemple #2
0
        public Node parseList()
        {
            if (!consumeIf("* "))
                return parseCodeBlock();

            CompositeNode c = new CompositeNode();
            while (true)
            {
                c.add(new Wrapper("<li>", line(), "</li>\n"));

                if (consumeIf("* "))
                    continue;
                consumeIf("\n");
                return new Wrapper("<ul>\n", c, "</ul>");
            }
        }
Exemple #3
0
 public Node parseParagraphBody()
 {
     var res = new CompositeNode();
     while (true)
     {
         var n = line();
         res.add(n);
         if(consumeIf("\n") || eof())
             return res;
     }
 }
Exemple #4
0
        public Node parse()
        {
            //            if (input.Contains("backticks"))
            //                return new TextNode("<p>Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span></p>");
            int count = -1;
            var res = new CompositeNode();
            while (true)
            {
                ++count;
                if (count > 0)
                    res.add(new TextNode("\n"));
                var n = parseList();
                res.add(new Wrapper("", n, "\n"));

                if (input.eof())
                    return res;
            }
        }