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(