diff --git a/project/build.scala b/project/build.scala index 9d2e16d..13e3069 100644 --- a/project/build.scala +++ b/project/build.scala @@ -44,9 +44,7 @@ "ch.qos.logback" % "logback-classic" % "1.0.13" % "runtime", "org.eclipse.jetty" % "jetty-webapp" % "8.1.8.v20121106" % "container;provided", "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts Artifact("javax.servlet", "jar", "jar"), - "junit" % "junit" % "4.11" % "test", - "org.asciidoctor" % "asciidoctor-java-integration" % "0.1.4", - "net.sourceforge.htmlcleaner" % "htmlcleaner" % "2.7" + "junit" % "junit" % "4.11" % "test" ), EclipseKeys.withSource := true, javacOptions in compile ++= Seq("-target", "6", "-source", "6"), diff --git a/src/main/scala/view/Asciidoc.scala b/src/main/scala/view/Asciidoc.scala deleted file mode 100644 index 5c131c4..0000000 --- a/src/main/scala/view/Asciidoc.scala +++ /dev/null @@ -1,62 +0,0 @@ -package view - -import org.asciidoctor.Asciidoctor -import org.asciidoctor.AttributesBuilder -import org.asciidoctor.OptionsBuilder -import org.asciidoctor.SafeMode -import org.htmlcleaner.HtmlCleaner -import org.htmlcleaner.HtmlNode -import org.htmlcleaner.SimpleHtmlSerializer -import org.htmlcleaner.TagNode -import org.htmlcleaner.TagNodeVisitor - -object Asciidoc { - - private[this] lazy val asciidoctor = Asciidoctor.Factory.create() - - /** - * Converts Markdown of Wiki pages to HTML. - */ - def toHtml(filePath: List[String], asciidoc: String, branch: String, repository: service.RepositoryService.RepositoryInfo, - enableWikiLink: Boolean, enableRefsLink: Boolean)(implicit context: app.Context): String = { - - val options = OptionsBuilder.options() - options.safe(SafeMode.SECURE) - val attributes = AttributesBuilder.attributes() - attributes.showTitle(true) - options.attributes(attributes.get()) - val rendered = asciidoctor.render(asciidoc, options) - - val path = filePath.reverse.tail.reverse match { - case Nil => "" - case p => p.mkString("", "/", "/") - } - val relativeUrlPrefix = s"${helpers.url(repository)}/blob/${branch}/${path}" - prefixRelativeUrls(rendered, relativeUrlPrefix) - } - - private[this] val exceptionPrefixes = Seq("#", "/", "http://", "https://") - - def prefixRelativeUrls(html: String, urlPrefix: String): String = { - val cleaner = new HtmlCleaner() - val node = cleaner.clean(html) - node.traverse(new TagNodeVisitor() { - override def visit(tagNode: TagNode, htmlNode: HtmlNode): Boolean = { - htmlNode match { - case tag: TagNode if tag.getName == "a" => - Option(tag.getAttributeByName("href")) foreach { href => - if (exceptionPrefixes.forall(p => !href.startsWith(p))) { - tag.addAttribute("href", s"${urlPrefix}${href}") - } - } - case _ => - } - // continue traversal - true - } - }) - new SimpleHtmlSerializer(cleaner.getProperties()).getAsString(node) - } - -} - diff --git a/src/main/scala/view/helpers.scala b/src/main/scala/view/helpers.scala index feb5f21..8e8a61f 100644 --- a/src/main/scala/view/helpers.scala +++ b/src/main/scala/view/helpers.scala @@ -30,9 +30,7 @@ private[this] val renderersBySuffix: Seq[(String, (List[String], String, String, service.RepositoryService.RepositoryInfo, Boolean, Boolean, app.Context) => Html)] = Seq( ".md" -> ((filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink, context) => markdown(fileContent, repository, enableWikiLink, enableRefsLink)(context)), - ".markdown" -> ((filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink, context) => markdown(fileContent, repository, enableWikiLink, enableRefsLink)(context)), - ".adoc" -> ((filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink, context) => asciidoc(filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink)(context)), - ".asciidoc" -> ((filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink, context) => asciidoc(filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink)(context)) + ".markdown" -> ((filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink, context) => markdown(fileContent, repository, enableWikiLink, enableRefsLink)(context)) ) def renderableSuffixes: Seq[String] = renderersBySuffix.map(_._1) @@ -59,10 +57,6 @@ } } - def asciidoc(filePath: List[String], value: String, branch: String, repository: service.RepositoryService.RepositoryInfo, - enableWikiLink: Boolean, enableRefsLink: Boolean)(implicit context: app.Context): Html = - Html(Asciidoc.toHtml(filePath, value, branch, repository, enableWikiLink, enableRefsLink)) - /** * Returns <img> which displays the avatar icon for the given user name. * This method looks up Gravatar if avatar icon has not been configured in user settings.