From 8f0e2fe4424f04c378a0e8486e07e02a93d228b4 Mon Sep 17 00:00:00 2001 From: takezoe Date: Sun, 16 Jun 2013 03:43:03 +0900 Subject: [PATCH] Adjust link / image url in Wiki. --- src/main/scala/view/Markdown.scala | 31 ++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/scala/view/Markdown.scala b/src/main/scala/view/Markdown.scala index 849257244..b9fca31cc 100644 --- a/src/main/scala/view/Markdown.scala +++ b/src/main/scala/view/Markdown.scala @@ -62,8 +62,14 @@ class GitBucketVerbatimSerializer extends VerbatimSerializer { } } -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 @@ class GitBucketHtmlSerializer(markdown: String, context: app.Context, repository } 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}",