diff --git a/src/main/scala/view/LinkConverter.scala b/src/main/scala/view/LinkConverter.scala index f15bfe6..121cb2d 100644 --- a/src/main/scala/view/LinkConverter.scala +++ b/src/main/scala/view/LinkConverter.scala @@ -14,22 +14,21 @@ // escape HTML tags .replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """) // convert issue id to link - .replaceBy(("(^|\\W)" + issueIdPrefix + "(\\d+)(\\W|$)").r){ m => + .replaceBy(("(?<=(^|\\W))" + issueIdPrefix + "([0-9]+)(?=(\\W|$))").r){ m => getIssue(repository.owner, repository.name, m.group(2)) match { case Some(issue) if(issue.isPullRequest) - => Some(s"""${m.group(1)}#${m.group(2)}${m.group(3)}""") - case Some(_) => Some(s"""${m.group(1)}#${m.group(2)}${m.group(3)}""") - case None => Some(s"""${m.group(1)}#${m.group(2)}${m.group(3)}""") - + => Some(s"""#${m.group(2)}""") + case Some(_) => Some(s"""#${m.group(2)}""") + case None => Some(s"""#${m.group(2)}""") } } // convert @username to link - .replaceBy("(^|\\W)@([a-zA-Z0-9\\-_]+)(\\W|$)".r){ m => + .replaceBy("(?<=(^|\\W))@([a-zA-Z0-9\\-_]+)(?=(\\W|$))".r){ m => getAccountByUserName(m.group(2)).map { _ => - s"""${m.group(1)}@${m.group(2)}${m.group(3)}""" + s"""@${m.group(2)}""" } } // convert commit id to link - .replaceAll("(^|\\W)([a-f0-9]{40})(\\W|$)", s"""$$1$$2$$3""") + .replaceAll("(?<=(^|\\W))([a-f0-9]{40})(?=(\\W|$))", s"""$$2""") } } diff --git a/src/main/scala/view/Markdown.scala b/src/main/scala/view/Markdown.scala index 90da6da..7d796ee 100644 --- a/src/main/scala/view/Markdown.scala +++ b/src/main/scala/view/Markdown.scala @@ -19,7 +19,7 @@ enableWikiLink: Boolean, enableRefsLink: Boolean)(implicit context: app.Context): String = { // escape issue id val source = if(enableRefsLink){ - markdown.replaceAll("(^|\\W)#([0-9]+)(\\W|$)", "$1issue:$2$3") + markdown.replaceAll("(?<=(\\W|^))#(\\d+)(?=(\\W|$))", "issue:$2") } else markdown val rootNode = new PegDownProcessor(