PegdownParser implements MarkdownParser { public static String wrapWithMarkdownClassDiv(String html) { return new StringBuilder() .append("<div class=\"markdown-body\">\n") .append(html) .append("\n</div>") .toString(); } PegdownParser(); @Override String render(String markdownText); static String wrapWithMarkdownClassDiv(String html); static final long PARSING_TIMEOUT_AS_MILLIS; static final int OPTIONS; }
@Test public void testHeader() { InterpreterResult r1 = md.interpret("# H1", null); assertEquals(wrapWithMarkdownClassDiv("<h1>H1</h1>"), r1.message().get(0).getData()); InterpreterResult r2 = md.interpret("## H2", null); assertEquals(wrapWithMarkdownClassDiv("<h2>H2</h2>"), r2.message().get(0).getData()); InterpreterResult r3 = md.interpret("### H3", null); assertEquals(wrapWithMarkdownClassDiv("<h3>H3</h3>"), r3.message().get(0).getData()); InterpreterResult r4 = md.interpret("#### H4", null); assertEquals(wrapWithMarkdownClassDiv("<h4>H4</h4>"), r4.message().get(0).getData()); InterpreterResult r5 = md.interpret("##### H5", null); assertEquals(wrapWithMarkdownClassDiv("<h5>H5</h5>"), r5.message().get(0).getData()); InterpreterResult r6 = md.interpret("###### H6", null); assertEquals(wrapWithMarkdownClassDiv("<h6>H6</h6>"), r6.message().get(0).getData()); InterpreterResult r7 = md.interpret("Alt-H1\n" + "======", null); assertEquals(wrapWithMarkdownClassDiv("<h1>Alt-H1</h1>"), r7.message().get(0).getData()); InterpreterResult r8 = md.interpret("Alt-H2\n" + "------", null); assertEquals(wrapWithMarkdownClassDiv("<h2>Alt-H2</h2>"), r8.message().get(0).getData()); }
@Test public void testStrikethrough() { InterpreterResult result = md.interpret("This is ~~deleted~~ text", null); assertEquals( wrapWithMarkdownClassDiv("<p>This is <del>deleted</del> text</p>"), result.message().get(0).getData()); }
@Test public void testItalics() { InterpreterResult result = md.interpret("This is *italics* text", null); assertEquals( wrapWithMarkdownClassDiv("<p>This is <em>italics</em> text</p>"), result.message().get(0).getData()); }
@Test public void testStrongEmphasis() { InterpreterResult result = md.interpret("This is **strong emphasis** text", null); assertEquals( wrapWithMarkdownClassDiv("<p>This is <strong>strong emphasis</strong> text</p>"), result.message().get(0).getData()); }
@Test public void testOrderedList() { String input = new StringBuilder() .append("1. First ordered list item\n") .append("2. Another item") .toString(); String expected = new StringBuilder() .append("<ol>\n") .append(" <li>First ordered list item</li>\n") .append(" <li>Another item</li>\n") .append("</ol>") .toString(); InterpreterResult result = md.interpret(input, null); assertEquals(wrapWithMarkdownClassDiv(expected), result.message().get(0).getData()); }
@Test public void testUnorderedList() { String input = new StringBuilder() .append("* Unordered list can use asterisks\n") .append("- Or minuses\n") .append("+ Or pluses") .toString(); String expected = new StringBuilder() .append("<ul>\n") .append(" <li>Unordered list can use asterisks</li>\n") .append(" <li>Or minuses</li>\n") .append(" <li>Or pluses</li>\n") .append("</ul>") .toString(); InterpreterResult result = md.interpret(input, null); assertEquals(wrapWithMarkdownClassDiv(expected), result.message().get(0).getData()); }
@Test public void testLinks() { String input = new StringBuilder() .append("[I'm an inline-style link](https: .append("\n") .append( "[I'm an inline-style link with title](https: + "\"Google's Homepage\")\n") .append("\n") .append("[I'm a reference-style link][Arbitrary case-insensitive reference text]\n") .append("\n") .append("[I'm a relative reference to a repository file](../blob/master/LICENSE)\n") .append("\n") .append("[You can use numbers for reference-style link definitions][1]\n") .append("\n") .append("Or leave it empty and use the [link text itself].\n") .append("\n") .append("URLs and URLs in angle brackets will automatically get turned into links. \n") .append("http: .append("example.com (but not on Github, for example).\n") .append("\n") .append("Some text to show that the reference links can follow later.\n") .append("\n") .append("[arbitrary case-insensitive reference text]: https: .append("[1]: http: .append("[link text itself]: http: .toString(); String expected = new StringBuilder() .append( "<p><a href=\"https: .append( "<p><a href=\"https: + "an inline-style link with title</a></p>\n") .append( "<p><a href=\"https: .append( "<p><a href=\"../blob/master/LICENSE\">I&rsquo;m a relative reference to a " + "repository file</a></p>\n") .append( "<p><a href=\"http: + "definitions</a></p>\n") .append( "<p>Or leave it empty and use the <a href=\"http: + "itself</a>.</p>\n") .append( "<p>URLs and URLs in angle brackets will automatically get turned into links." + "<br/><a href=\"http: + "<a href=\"http: + "sometimes<br/>example.com (but not on Github, for example).</p>\n") .append("<p>Some text to show that the reference links can follow later.</p>") .toString(); InterpreterResult result = md.interpret(input, null); assertEquals(wrapWithMarkdownClassDiv(expected), result.message().get(0).getData()); }
@Test public void testInlineCode() { InterpreterResult result = md.interpret("Inline `code` has `back-ticks around` it.", null); assertEquals( wrapWithMarkdownClassDiv( "<p>Inline <code>code</code> has <code>back-ticks around</code> it.</p>"), result.message().get(0).getData()); }
@Test public void testBlockQuotes() { InterpreterResult r1 = md.interpret( "> Blockquotes are very handy in email to emulate reply text.\n" + "> This line is part of the same quote.", null); assertEquals( wrapWithMarkdownClassDiv( "<blockquote>\n" + " <p>Blockquotes are very handy in email to emulate reply text.<br/>This " + "line is part of the same quote.</p>\n" + "</blockquote>"), r1.message().get(0).getData()); InterpreterResult r2 = md.interpret( "> This is a very long line that will still be quoted properly when it " + "wraps. Oh boy let's keep writing to make sure this is long enough to " + "actually wrap for everyone. Oh, you can *put* **MarkdownInterpreter** " + "into a blockquote. ", null); assertEquals( wrapWithMarkdownClassDiv( "<blockquote>\n" + " <p>This is a very long line that will still be quoted properly when " + "it wraps. Oh boy let&rsquo;s keep writing to make sure this is long enough " + "to actually wrap for everyone. Oh, you can <em>put</em> " + "<strong>MarkdownInterpreter</strong> into a blockquote. </p>\n" + "</blockquote>"), r2.message().get(0).getData()); }
@Test public void testSimpleTable() { String input = new StringBuilder() .append("MarkdownInterpreter | Less | Pretty\n") .append("--- | --- | ---\n") .append("*Still* | `renders` | **nicely**\n") .append("1 | 2 | 3") .toString(); String expected = new StringBuilder() .append("<table>\n") .append(" <thead>\n") .append(" <tr>\n") .append(" <th>MarkdownInterpreter </th>\n") .append(" <th>Less </th>\n") .append(" <th>Pretty</th>\n") .append(" </tr>\n") .append(" </thead>\n") .append(" <tbody>\n") .append(" <tr>\n") .append(" <td><em>Still</em> </td>\n") .append(" <td><code>renders</code> </td>\n") .append(" <td><strong>nicely</strong></td>\n") .append(" </tr>\n") .append(" <tr>\n") .append(" <td>1 </td>\n") .append(" <td>2 </td>\n") .append(" <td>3</td>\n") .append(" </tr>\n") .append(" </tbody>\n") .append("</table>") .toString(); InterpreterResult result = md.interpret(input, null); assertEquals(wrapWithMarkdownClassDiv(expected), result.message().get(0).getData()); }
@Test public void testAlignedTable() { String input = new StringBuilder() .append("| First Header | Second Header | Third Header |\n") .append("| :----------- | :-----------: | -------------------: |\n") .append("| First row | Data | Very long data entry |\n") .append("| Second row | **Cell** | *Cell* |") .toString(); String expected = new StringBuilder() .append("<table>\n") .append(" <thead>\n") .append(" <tr>\n") .append(" <th align=\"left\">First Header </th>\n") .append(" <th align=\"center\">Second Header </th>\n") .append(" <th align=\"right\">Third Header </th>\n") .append(" </tr>\n") .append(" </thead>\n") .append(" <tbody>\n") .append(" <tr>\n") .append(" <td align=\"left\">First row </td>\n") .append(" <td align=\"center\">Data </td>\n") .append(" <td align=\"right\">Very long data entry </td>\n") .append(" </tr>\n") .append(" <tr>\n") .append(" <td align=\"left\">Second row </td>\n") .append(" <td align=\"center\"><strong>Cell</strong> </td>\n") .append(" <td align=\"right\"><em>Cell</em> </td>\n") .append(" </tr>\n") .append(" </tbody>\n") .append("</table>") .toString(); InterpreterResult result = md.interpret(input, null); assertEquals(wrapWithMarkdownClassDiv(expected), result.message().get(0).getData()); }