From 7297a0746695d85c8891bd1c576c2a5900a266ab Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Tue, 9 Jun 2015 02:24:45 +0900 Subject: [PATCH] (refs #751)Fix issue reference in verbatim node --- .../scala/gitbucket/core/view/LinkConverter.scala | 11 ++++++----- src/main/scala/gitbucket/core/view/Markdown.scala | 12 ++++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/scala/gitbucket/core/view/LinkConverter.scala b/src/main/scala/gitbucket/core/view/LinkConverter.scala index 951a45da4..59bebe6af 100644 --- a/src/main/scala/gitbucket/core/view/LinkConverter.scala +++ b/src/main/scala/gitbucket/core/view/LinkConverter.scala @@ -2,7 +2,6 @@ package gitbucket.core.view import gitbucket.core.controller.Context import gitbucket.core.service.{RepositoryService, RequestCache} -import gitbucket.core.util.Implicits import gitbucket.core.util.Implicits.RichString trait LinkConverter { self: RequestCache => @@ -11,10 +10,12 @@ trait LinkConverter { self: RequestCache => * Converts issue id, username and commit id to link. */ protected def convertRefsLinks(value: String, repository: RepositoryService.RepositoryInfo, - issueIdPrefix: String = "#")(implicit context: Context): String = { - value - // escape HTML tags - .replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """) + issueIdPrefix: String = "#", escapeHtml: Boolean = true)(implicit context: Context): String = { + + // escape HTML tags + val escaped = if(escapeHtml) value.replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """) else value + + escaped // convert issue id to link .replaceBy(("(?<=(^|\\W))" + issueIdPrefix + "([0-9]+)(?=(\\W|$))").r){ m => getIssue(repository.owner, repository.name, m.group(2)) match { diff --git a/src/main/scala/gitbucket/core/view/Markdown.scala b/src/main/scala/gitbucket/core/view/Markdown.scala index 7f7e1fdc9..2cf6ca51e 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -177,6 +177,18 @@ class GitBucketHtmlSerializer( } } + override def visit(node: VerbatimNode) { + val printer = new Printer() + val serializer = verbatimSerializers.get(VerbatimSerializer.DEFAULT) + serializer.serialize(node, printer) + val html = printer.getString + + // convert commit id and username to link. + val t = if(enableRefsLink) convertRefsLinks(html, repository, "issue:", escapeHtml = false) else html + + this.printer.print(t) + } + override def visit(node: BulletListNode): Unit = { if (printChildrenToString(node).contains("""class="task-list-item-checkbox" """)) { printer.println().print("""