@ -91,7 +91,7 @@ var (
IssueAlphanumericPattern = regexp . MustCompile ( ` ( |^|\()[A-Z] { 1,10}-[1-9][0-9]*\b ` )
// CrossReferenceIssueNumericPattern matches string that references a numeric issue in a difference repository
// e.g. gogits/gogs#12345
CrossReferenceIssueNumericPattern = regexp . MustCompile ( ` ( |^)[0-9a-zA-Z]+/[0-9a-zA-Z]+#[0-9]+\b ` )
CrossReferenceIssueNumericPattern = regexp . MustCompile ( ` ( |^)[0-9a-zA-Z-_\. ]+/[0-9a-zA-Z-_\. ]+#[0-9]+\b ` )
// Sha1CurrentPattern matches string that represents a commit SHA, e.g. d8a994ef243349f321568f9e36d5c3f444b99cae
// FIXME: this pattern matches pure numbers as well, right now we do a hack to check in RenderSha1CurrentPattern
@ -158,16 +158,16 @@ func (r *Renderer) AutoLink(out *bytes.Buffer, link []byte, kind int) {
j = len ( m )
}
issue := string ( m [ i + 7 : j ] )
fullRepoUrl := setting . AppUrl + strings . TrimPrefix ( r . urlPrefix , "/" )
index := string ( m [ i + 7 : j ] )
fullRepoURL := setting . AppUrl + strings . TrimPrefix ( r . urlPrefix , "/" )
var link string
if strings . HasPrefix ( string ( m ) , fullRepoUrl ) {
if strings . HasPrefix ( string ( m ) , fullRepoURL ) {
// Use a short issue reference if the URL refers to this repository
link = fmt . Sprintf ( ` <a href="%s">#%s</a> ` , m , issue )
link = fmt . Sprintf ( ` <a href="%s">#%s</a> ` , m , index )
} else {
// Use a cross-repository issue reference if the URL refers to a different repository
repo := string ( m [ len ( setting . AppUrl ) : i - 1 ] )
link = fmt . Sprintf ( ` <a href="%s">%s#%s</a> ` , m , repo , issue )
link = fmt . Sprintf ( ` <a href="%s">%s#%s</a> ` , m , repo , index )
}
out . WriteString ( link )
return
@ -284,10 +284,11 @@ func RenderCrossReferenceIssueIndexPattern(rawBytes []byte, urlPrefix string, me
m = m [ 1 : ] // ignore leading space or opening parentheses
}
repo := string ( bytes . Split ( m , [ ] byte ( "#" ) ) [ 0 ] )
issue := string ( bytes . Split ( m , [ ] byte ( "#" ) ) [ 1 ] )
fields := bytes . Split ( m , [ ] byte ( "#" ) ) [ 0 ]
repo := string ( fields [ 0 ] )
index := string ( fields [ 1 ] )
link := fmt . Sprintf ( ` <a href="%s%s/issues/%s">%s</a> ` , setting . AppUrl , repo , issue , m )
link := fmt . Sprintf ( ` <a href="%s%s/issues/%s">%s</a> ` , setting . AppUrl , repo , index , m )
rawBytes = bytes . Replace ( rawBytes , m , [ ] byte ( link ) , 1 )
}
return rawBytes