From 0365f6248d6aaa7c765ac63273c282d16161a623 Mon Sep 17 00:00:00 2001 From: James Moger Date: Fri, 18 Oct 2013 17:46:22 -0400 Subject: [PATCH] Replaced MarkdownPapers with pegdown Change-Id: I11eb50ba1ef0bef8ac47bf6f7b17e0f79ecd3f2d --- .classpath | 8 ++- NOTICE | 18 ++--- build.moxie | 2 +- gitblit.iml | 72 ++++++++++++++++++- releases.moxie | 1 + src/main/java/com/gitblit/GitBlit.java | 3 +- .../java/com/gitblit/utils/MarkdownUtils.java | 40 ++++------- .../gitblit/wicket/pages/MarkdownPage.java | 4 +- .../gitblit/wicket/pages/RepositoryPage.java | 2 +- .../com/gitblit/wicket/pages/SummaryPage.java | 4 +- src/site/design.mkd | 2 +- .../com/gitblit/tests/MarkdownUtilsTest.java | 14 +--- 12 files changed, 108 insertions(+), 62 deletions(-) diff --git a/.classpath b/.classpath index ba81e42f..08039d6f 100644 --- a/.classpath +++ b/.classpath @@ -20,7 +20,13 @@ - + + + + + + + diff --git a/NOTICE b/NOTICE index 6468c497..750af00d 100644 --- a/NOTICE +++ b/NOTICE @@ -55,14 +55,6 @@ WicketStuff GoogleCharts https://github.com/wicketstuff/core/wiki/GoogleCharts ---------------------------------------------------------------------------- -MarkdownPapers ---------------------------------------------------------------------------- - MarkdownPapers, released under the - Apache Software License, Version 2.0. - - http://markdown.tautua.org - --------------------------------------------------------------------------- Jetty --------------------------------------------------------------------------- @@ -318,4 +310,12 @@ commons-codec Apache License 2.0. http://commons.apache.org/proper/commons-codec - \ No newline at end of file + +--------------------------------------------------------------------------- +pegdown +--------------------------------------------------------------------------- + pegdown, release under the + Apache License 2.0. + + https://github.com/sirthias/pegdown + \ No newline at end of file diff --git a/build.moxie b/build.moxie index df0a36d1..44f6d059 100644 --- a/build.moxie +++ b/build.moxie @@ -135,7 +135,7 @@ dependencies: - compile 'org.apache.lucene:lucene-core:${lucene.version}' :war :fedclient - compile 'org.apache.lucene:lucene-highlighter:${lucene.version}' :war :fedclient - compile 'org.apache.lucene:lucene-memory:${lucene.version}' :war :fedclient -- compile 'org.tautua.markdownpapers:markdownpapers-core:1.3.2' :war +- compile 'org.pegdown:pegdown:1.4.1' :war - compile 'org.eclipse.jgit:org.eclipse.jgit:${jgit.version}' :war :fedclient :manager :authority - compile 'org.eclipse.jgit:org.eclipse.jgit.http.server:${jgit.version}' :war :fedclient :manager :authority - compile 'org.bouncycastle:bcprov-jdk15on:${bouncycastle.version}' :war :authority diff --git a/gitblit.iml b/gitblit.iml index 736376b3..c31d1e9e 100644 --- a/gitblit.iml +++ b/gitblit.iml @@ -196,13 +196,79 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/releases.moxie b/releases.moxie index e086f43e..a48473da 100644 --- a/releases.moxie +++ b/releases.moxie @@ -32,6 +32,7 @@ r20: { dependencyChanges: - updated to Jetty 7.6.13 - updated to JGit 3.1.0 + - replaced MarkdownPapers with pegdown 1.4.1 settings: - { name: 'git.createRepositoriesShared', defaultValue: 'false' } - { name: 'git.allowAnonymousPushes', defaultValue: 'false' } diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java index 7f82432d..a23dd8c2 100644 --- a/src/main/java/com/gitblit/GitBlit.java +++ b/src/main/java/com/gitblit/GitBlit.java @@ -32,7 +32,6 @@ import java.net.URISyntaxException; import java.nio.charset.Charset; import java.security.Principal; import java.text.MessageFormat; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -2713,7 +2712,7 @@ public class GitBlit implements ServletContextListener { try { String prepared = processCommitMessageRegex(repository.name, text); return MarkdownUtils.transformMarkdown(prepared); - } catch (ParseException e) { + } catch (Exception e) { logger.error("Failed to render commit message as markdown", e); } break; diff --git a/src/main/java/com/gitblit/utils/MarkdownUtils.java b/src/main/java/com/gitblit/utils/MarkdownUtils.java index 15242364..33d7a6ae 100644 --- a/src/main/java/com/gitblit/utils/MarkdownUtils.java +++ b/src/main/java/com/gitblit/utils/MarkdownUtils.java @@ -15,14 +15,14 @@ */ package com.gitblit.utils; +import static org.pegdown.Extensions.ALL; + import java.io.IOException; import java.io.Reader; -import java.io.StringReader; import java.io.StringWriter; -import org.slf4j.LoggerFactory; -import org.tautua.markdownpapers.Markdown; -import org.tautua.markdownpapers.parser.ParseException; +import org.apache.commons.io.IOUtils; +import org.pegdown.PegDownProcessor; /** * Utility methods for transforming raw markdown text to html. @@ -39,17 +39,10 @@ public class MarkdownUtils { * @return html version of markdown text * @throws java.text.ParseException */ - public static String transformMarkdown(String markdown) throws java.text.ParseException { - try { - StringReader reader = new StringReader(markdown); - String html = transformMarkdown(reader); - reader.close(); - return html; - } catch (IllegalArgumentException e) { - throw new java.text.ParseException(e.getMessage(), 0); - } catch (NullPointerException p) { - throw new java.text.ParseException("Markdown string is null!", 0); - } + public static String transformMarkdown(String markdown) { + PegDownProcessor pd = new PegDownProcessor(ALL); + String html = pd.markdownToHtml(markdown); + return html; } /** @@ -60,22 +53,13 @@ public class MarkdownUtils { * @return html version of the markdown text * @throws java.text.ParseException */ - public static String transformMarkdown(Reader markdownReader) throws java.text.ParseException { + public static String transformMarkdown(Reader markdownReader) throws IOException { // Read raw markdown content and transform it to html StringWriter writer = new StringWriter(); try { - Markdown md = new Markdown(); - md.transform(markdownReader, writer); - return writer.toString().trim(); - } catch (StringIndexOutOfBoundsException e) { - LoggerFactory.getLogger(MarkdownUtils.class).error("MarkdownPapers failed to parse Markdown!", e); - throw new java.text.ParseException(e.getMessage(), 0); - } catch (ParseException p) { - LoggerFactory.getLogger(MarkdownUtils.class).error("MarkdownPapers failed to parse Markdown!", p); - throw new java.text.ParseException(p.getMessage(), 0); - } catch (Exception e) { - LoggerFactory.getLogger(MarkdownUtils.class).error("MarkdownPapers failed to parse Markdown!", e); - throw new java.text.ParseException(e.getMessage(), 0); + IOUtils.copy(markdownReader, writer); + String markdown = writer.toString(); + return transformMarkdown(markdown); } finally { try { writer.close(); diff --git a/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java b/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java index 5aa80294..188a5b4b 100644 --- a/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java +++ b/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java @@ -16,7 +16,6 @@ package com.gitblit.wicket.pages; import java.text.MessageFormat; -import java.text.ParseException; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; @@ -60,7 +59,8 @@ public class MarkdownPage extends RepositoryPage { String htmlText; try { htmlText = MarkdownUtils.transformMarkdown(markdownText); - } catch (ParseException p) { + } catch (Exception e) { + logger.error("failed to transform markdown", e); markdownText = MessageFormat.format("
{0}: {1}
{2}", getString("gb.error"), getString("gb.markdownFailure"), markdownText); htmlText = StringUtils.breakLinesForHtml(markdownText); } diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java index e5ce22a1..dabaed03 100644 --- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java @@ -75,7 +75,7 @@ import com.gitblit.wicket.panels.RefsPanel; public abstract class RepositoryPage extends RootPage { - private final Logger logger = LoggerFactory.getLogger(getClass()); + protected final Logger logger = LoggerFactory.getLogger(getClass()); private final String PARAM_STAR = "star"; diff --git a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java index 00d77a4e..cc9697c6 100644 --- a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java @@ -18,7 +18,6 @@ package com.gitblit.wicket.pages; import java.awt.Color; import java.awt.Dimension; import java.text.MessageFormat; -import java.text.ParseException; import java.util.ArrayList; import java.util.List; @@ -166,7 +165,8 @@ public class SummaryPage extends RepositoryPage { markdownText = JGitUtils.getStringContent(r, head.getTree(), readme, encodings); htmlText = MarkdownUtils.transformMarkdown(markdownText); } - } catch (ParseException p) { + } catch (Exception e) { + logger.error("failed to transform markdown", e); markdownText = MessageFormat.format("
{0}: {1}
{2}", getString("gb.error"), getString("gb.markdownFailure"), markdownText); htmlText = StringUtils.breakLinesForHtml(markdownText); } diff --git a/src/site/design.mkd b/src/site/design.mkd index ce676201..1f1635a4 100644 --- a/src/site/design.mkd +++ b/src/site/design.mkd @@ -29,7 +29,6 @@ The following dependencies are automatically downloaded by Gitblit GO (or alread - [JGit][jgit] (EDL 1.0) - [Wicket](http://wicket.apache.org) (Apache 2.0) - [WicketStuff GoogleCharts](https://github.com/wicketstuff/core/wiki/GoogleCharts) (Apache 2.0) -- [MarkdownPapers](http://markdown.tautua.org) (Apache 2.0) - [Jetty](http://eclipse.org/jetty) (Apache 2.0, EPL 1.0) - [SLF4J](http://www.slf4j.org) (MIT/X11) - [Log4j](http://logging.apache.org/log4j) (Apache 2.0) @@ -53,6 +52,7 @@ The following dependencies are automatically downloaded by Gitblit GO (or alread - [Guava](https://code.google.com/p/guava-libraries) (Apache 2.0) - [libpam4j](https://github.com/kohsuke/libpam4j) (MIT) - [commons-codec](http://commons.apache.org/proper/commons-codec) (Apache 2.0) +- [pegdown](https://github.com/sirthias/pegdown) (Apache 2.0) ### Other Build Dependencies - [Fancybox image viewer](http://fancybox.net) (MIT and GPL dual-licensed) diff --git a/src/test/java/com/gitblit/tests/MarkdownUtilsTest.java b/src/test/java/com/gitblit/tests/MarkdownUtilsTest.java index cd7ca020..34583747 100644 --- a/src/test/java/com/gitblit/tests/MarkdownUtilsTest.java +++ b/src/test/java/com/gitblit/tests/MarkdownUtilsTest.java @@ -16,9 +16,6 @@ package com.gitblit.tests; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.text.ParseException; import org.junit.Test; @@ -28,8 +25,8 @@ public class MarkdownUtilsTest { @Test public void testMarkdown() throws Exception { - assertEquals("

H1

", MarkdownUtils.transformMarkdown("# H1")); - assertEquals("

H2

", MarkdownUtils.transformMarkdown("## H2")); + assertEquals("

H1

", MarkdownUtils.transformMarkdown("# H1")); + assertEquals("

H2

", MarkdownUtils.transformMarkdown("## H2")); assertEquals("

THIS is a test

", MarkdownUtils.transformMarkdown("**THIS** is a test")); assertEquals("

** THIS ** is a test

", @@ -43,12 +40,5 @@ public class MarkdownUtilsTest { MarkdownUtils.transformMarkdown("
test
")); assertEquals("
<test>
", MarkdownUtils.transformMarkdown("
<test>
")); - - try { - MarkdownUtils.transformMarkdown((String) null); - assertTrue(false); - } catch (ParseException p) { - assertTrue(p != null); - } } } \ No newline at end of file -- 2.39.5