diff --git a/src/main/scala/gitbucket/core/view/LinkConverter.scala b/src/main/scala/gitbucket/core/view/LinkConverter.scala index 7792626..36d55f5 100644 --- a/src/main/scala/gitbucket/core/view/LinkConverter.scala +++ b/src/main/scala/gitbucket/core/view/LinkConverter.scala @@ -18,47 +18,48 @@ escaped // convert username/project@SHA to link .replaceBy("(?<=(^|\\W))([a-zA-Z0-9\\-_]+)/([a-zA-Z0-9\\-_\\.]+)@([a-f0-9]{40})(?=(\\W|$))".r){ m => - getAccountByUserName(m.group(2)).map { _ => - s"""${m.group(2)}/${m.group(3)}@${m.group(4).substring(0, 7)}""" + getAccountByUserName(m.group(2)).map { _ => + s"""${m.group(2)}/${m.group(3)}@${m.group(4).substring(0, 7)}""" + } } - } // convert username/project#Num to link .replaceBy( ("(?<=(^|\\W))([a-zA-Z0-9\\-_]+)/([a-zA-Z0-9\\-_\\.]+)" + issueIdPrefix + "([0-9]+)(?=(\\W|$))").r){ m => - getIssue(m.group(2), m.group(3), m.group(4)) match { - case Some(issue) if (issue.isPullRequest) - => Some( s"""${m.group(2)}/${m.group(3)}#${m.group(4)}""") - case Some(_) => Some( s"""${m.group(2)}/${m.group(3)}#${m.group(4)}""") - case None => Some( s"""${m.group(2)}/${m.group(3)}#${m.group(4)}""") + getIssue(m.group(2), m.group(3), m.group(4)) match { + case Some(issue) if (issue.isPullRequest) + => Some( s"""${m.group(2)}/${m.group(3)}#${m.group(4)}""") + case Some(_) => Some( s"""${m.group(2)}/${m.group(3)}#${m.group(4)}""") + case None => Some( s"""${m.group(2)}/${m.group(3)}#${m.group(4)}""") + } } - } // convert username@SHA to link .replaceBy( ("(?<=(^|\\W))([a-zA-Z0-9\\-_]+)@([a-f0-9]{40})(?=(\\W|$))").r ) { m => - getAccountByUserName(m.group(2)).map { _ => - s"""${m.group(2)}@${m.group(3).substring(0, 7)}""" + getAccountByUserName(m.group(2)).map { _ => + s"""${m.group(2)}@${m.group(3).substring(0, 7)}""" + } } - } // convert username#Num to link .replaceBy( ("(?<=(^|\\W))([a-zA-Z0-9\\-_]+)" + issueIdPrefix + "([0-9]+)(?=(\\W|$))").r ) { m => - getIssue(m.group(2), repository.name, m.group(3)) match { - case Some(issue) if(issue.isPullRequest) - => Some(s"""${m.group(2)}#${m.group(3)}""") - case Some(_) => Some(s"""${m.group(2)}#${m.group(3)}""") - case None => Some(s"""${m.group(2)}#${m.group(3)}""") + getIssue(m.group(2), repository.name, m.group(3)) match { + case Some(issue) if(issue.isPullRequest) + => Some(s"""${m.group(2)}#${m.group(3)}""") + case Some(_) => Some(s"""${m.group(2)}#${m.group(3)}""") + case None => Some(s"""${m.group(2)}#${m.group(3)}""") + } } - } // convert issue id to link .replaceBy(("(?<=(^|\\W))(GH-|" + issueIdPrefix + ")([0-9]+)(?=(\\W|$))").r){ m => - getIssue(repository.owner, repository.name, m.group(3)) match { - case Some(issue) if(issue.isPullRequest) - => Some(s"""${m.group(2)}${m.group(3)}""") - case Some(_) => Some(s"""${m.group(2)}${m.group(3)}""") - case None => Some(s"""${m.group(2)}${m.group(3)}""") + val prefix = if(m.group(2) == "issue:") "#" else m.group(2) + getIssue(repository.owner, repository.name, m.group(3)) match { + case Some(issue) if(issue.isPullRequest) + => Some(s"""${prefix}${m.group(3)}""") + case Some(_) => Some(s"""${prefix}${m.group(3)}""") + case None => Some(s"""${m.group(2)}${m.group(3)}""") + } } - } // convert @username to link .replaceBy("(?<=(^|\\W))@([a-zA-Z0-9\\-_\\.]+)(?=(\\W|$))".r){ m =>