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; }
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>"); } }
public Node parseParagraphBody() { var res = new CompositeNode(); while (true) { var n = line(); res.add(n); if(consumeIf("\n") || eof()) return res; } }
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; } }