Adjust link / image url in Wiki.

This commit is contained in:
takezoe
2013-06-16 03:43:03 +09:00
parent 19cab6b2d8
commit 8f0e2fe442

View File

@@ -62,8 +62,14 @@ class GitBucketVerbatimSerializer extends VerbatimSerializer {
} }
} }
class GitBucketHtmlSerializer(markdown: String, context: app.Context, repository: service.RepositoryService.RepositoryInfo, class GitBucketHtmlSerializer(
enableWikiLink: Boolean, enableCommitLink: Boolean, enableIssueLink: Boolean) extends ToHtmlSerializer( markdown: String,
context: app.Context,
repository: service.RepositoryService.RepositoryInfo,
enableWikiLink: Boolean,
enableCommitLink: Boolean,
enableIssueLink: Boolean
) extends ToHtmlSerializer(
new GitBucketLinkRender(context, repository, enableWikiLink), new GitBucketLinkRender(context, repository, enableWikiLink),
Map[String, VerbatimSerializer](VerbatimSerializer.DEFAULT -> new GitBucketVerbatimSerializer).asJava Map[String, VerbatimSerializer](VerbatimSerializer.DEFAULT -> new GitBucketVerbatimSerializer).asJava
) { ) {
@@ -77,6 +83,27 @@ class GitBucketHtmlSerializer(markdown: String, context: app.Context, repository
} else html } else html
} }
override protected def printImageTag(imageNode: SuperNode, url: String): Unit =
printer.print("<img src=\"").print(fixUrl(url)).print("\" alt=\"").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("</a>")
}
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) { override def visit(node: TextNode) {
// convert commit id to link. // convert commit id to link.
val text1 = if(enableCommitLink) node.getText.replaceAll("[0-9a-f]{40}", val text1 = if(enableCommitLink) node.getText.replaceAll("[0-9a-f]{40}",