diff --git a/src/main/scala/view/Markdown.scala b/src/main/scala/view/Markdown.scala index 8492572..b9fca31 100644 --- a/src/main/scala/view/Markdown.scala +++ b/src/main/scala/view/Markdown.scala @@ -62,8 +62,14 @@ } } -class GitBucketHtmlSerializer(markdown: String, context: app.Context, repository: service.RepositoryService.RepositoryInfo, - enableWikiLink: Boolean, enableCommitLink: Boolean, enableIssueLink: Boolean) extends ToHtmlSerializer( +class GitBucketHtmlSerializer( + markdown: String, + context: app.Context, + repository: service.RepositoryService.RepositoryInfo, + enableWikiLink: Boolean, + enableCommitLink: Boolean, + enableIssueLink: Boolean + ) extends ToHtmlSerializer( new GitBucketLinkRender(context, repository, enableWikiLink), Map[String, VerbatimSerializer](VerbatimSerializer.DEFAULT -> new GitBucketVerbatimSerializer).asJava ) { @@ -77,6 +83,27 @@ } else html } + override protected def printImageTag(imageNode: SuperNode, url: String): Unit = + printer.print("\"").printEncoded(printChildrenToString(imageNode)).print("\"/") + + override protected def printLink(rendering: LinkRenderer.Rendering): Unit = { + printer.print('<').print('a') + printAttribute("href", fixUrl(rendering.href)) + for (attr <- rendering.attributes.asScala) { + printAttribute(attr.name, attr.value) + } + printer.print('>').print(rendering.text).print("") + } + + private def fixUrl(url: String): String = { + if(url.startsWith("http://") || url.startsWith("https://")) url + else repository.url.replaceFirst("/git/", "/").replaceFirst("\\.git$", "") + "/wiki/_blob/" + url + } + + private def printAttribute(name: String, value: String) { + printer.print(' ').print(name).print('=').print('"').print(value).print('"') + } + override def visit(node: TextNode) { // convert commit id to link. val text1 = if(enableCommitLink) node.getText.replaceAll("[0-9a-f]{40}",