From: <udi...@us...> - 2021-11-23 08:12:48
|
Revision: 1420 http://sourceforge.net/p/j-trac/code/1420 Author: udittmer Date: 2021-11-23 08:12:45 +0000 (Tue, 23 Nov 2021) Log Message: ----------- make Markdown rendering unit-testable Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java trunk/jtrac/src/test/java/info/jtrac/util/ItemUtilsTest.java Modified: trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java 2021-11-22 15:17:45 UTC (rev 1419) +++ trunk/jtrac/src/main/java/info/jtrac/util/ItemUtils.java 2021-11-23 08:12:45 UTC (rev 1420) @@ -140,19 +140,20 @@ if (text == null) { return null; } else { - String markdown = JtracApplication.get().getJtrac().loadConfig("markdown.enabled"); - if (markdown==null || markdown.equalsIgnoreCase("true")) { - // apply markdown - Node document = parser.parse(text); - return renderer.render(document); - } else { - // at least auto-link URLs - text = fixWhiteSpace(text); - return text.replaceAll(URL_PATTERN, "<a href='$0' target='_blank'>$0</a>"); - } + Node document = parser.parse(text); + return renderer.render(document); } } + public static String autolinkUrls (String text) { + if (text == null) { + return null; + } else { + text = fixWhiteSpace(text); + return text.replaceAll(URL_PATTERN, "<a href='$0' target='_blank'>$0</a>"); + } + } + // don't link if there's a slash immediately before the item; ignore case, so item-44 is the same as ITEM-44 public static String autolinkTickets (String baseUrl, String text, Set<Space> spaces) { if (text == null) { Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2021-11-22 15:17:45 UTC (rev 1419) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ItemViewPanel.java 2021-11-23 08:12:45 UTC (rev 1420) @@ -72,7 +72,12 @@ this.hideLinks = hideLinks; addComponents(item); } - + + protected boolean renderMarkdown() { + String markdown = JtracApplication.get().getJtrac().loadConfig("markdown.enabled"); + return markdown != null && markdown.equalsIgnoreCase("true"); + } + /** * This method allows to add components (items). * @@ -192,7 +197,10 @@ add(new Label("assignedTo", new PropertyModel(item, "assignedTo.name"))); add(new Label("summary", new PropertyModel(item, "summary"))); String text = item.getDetail(); - text = ItemUtils.renderMarkdown(text); + if (renderMarkdown()) + text = ItemUtils.renderMarkdown(text); + else + text = ItemUtils.autolinkUrls(text); text = ItemUtils.autolinkTickets(baseUrl, text, getPrincipal().getSpaces()); add(new Label("detail", text).setEscapeModelStrings(false)); @@ -245,7 +253,10 @@ WebMarkupContainer comment = new WebMarkupContainer("comment"); comment.add(new AttachmentLinkPanel("attachment", h.getAttachment())); String text = h.getComment(); - text = ItemUtils.renderMarkdown(text); + if (renderMarkdown()) + text = ItemUtils.renderMarkdown(text); + else + text = ItemUtils.autolinkUrls(text); text = ItemUtils.autolinkTickets(baseUrl, text, getPrincipal().getSpaces()); comment.add(new Label("comment", text).setEscapeModelStrings(false)); listItem.add(comment); Modified: trunk/jtrac/src/test/java/info/jtrac/util/ItemUtilsTest.java =================================================================== --- trunk/jtrac/src/test/java/info/jtrac/util/ItemUtilsTest.java 2021-11-22 15:17:45 UTC (rev 1419) +++ trunk/jtrac/src/test/java/info/jtrac/util/ItemUtilsTest.java 2021-11-23 08:12:45 UTC (rev 1420) @@ -17,4 +17,15 @@ Assert.assertEquals("Hello World", ItemUtils.fixWhiteSpace("Hello\tWorld")); } + @Test + public void testMarkdown() { + Assert.assertEquals(null, ItemUtils.renderMarkdown(null)); + Assert.assertEquals("", ItemUtils.renderMarkdown("")); + Assert.assertEquals("<p>Hello World</p>\n", ItemUtils.renderMarkdown("Hello World")); + Assert.assertEquals("<p><em>Hello</em> <strong>World</strong></p>\n", ItemUtils.renderMarkdown("*Hello* **World**")); + Assert.assertEquals("<h1>Hello World</h1>\n", ItemUtils.renderMarkdown("# Hello World")); + Assert.assertEquals("<h2>Hello World</h2>\n", ItemUtils.renderMarkdown("## Hello World")); + Assert.assertEquals("<blockquote>\n<p>Hello World</p>\n</blockquote>\n", ItemUtils.renderMarkdown("> Hello World")); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |