parent
d7ee5dc775
commit
8d962daed6
|
@ -13,6 +13,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/base"
|
"code.gitea.io/gitea/modules/base"
|
||||||
"code.gitea.io/gitea/modules/emoji"
|
"code.gitea.io/gitea/modules/emoji"
|
||||||
|
@ -71,9 +72,6 @@ var (
|
||||||
// CSS class for action keywords (e.g. "closes: #1")
|
// CSS class for action keywords (e.g. "closes: #1")
|
||||||
const keywordClass = "issue-keyword"
|
const keywordClass = "issue-keyword"
|
||||||
|
|
||||||
// regexp for full links to issues/pulls
|
|
||||||
var issueFullPattern *regexp.Regexp
|
|
||||||
|
|
||||||
// IsLink reports whether link fits valid format.
|
// IsLink reports whether link fits valid format.
|
||||||
func IsLink(link []byte) bool {
|
func IsLink(link []byte) bool {
|
||||||
return isLink(link)
|
return isLink(link)
|
||||||
|
@ -88,12 +86,17 @@ func isLinkStr(link string) bool {
|
||||||
return validLinksPattern.MatchString(link)
|
return validLinksPattern.MatchString(link)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: This function is not concurrent safe
|
// regexp for full links to issues/pulls
|
||||||
|
var issueFullPattern *regexp.Regexp
|
||||||
|
|
||||||
|
// Once for to prevent races
|
||||||
|
var issueFullPatternOnce sync.Once
|
||||||
|
|
||||||
func getIssueFullPattern() *regexp.Regexp {
|
func getIssueFullPattern() *regexp.Regexp {
|
||||||
if issueFullPattern == nil {
|
issueFullPatternOnce.Do(func() {
|
||||||
issueFullPattern = regexp.MustCompile(regexp.QuoteMeta(setting.AppURL) +
|
issueFullPattern = regexp.MustCompile(regexp.QuoteMeta(setting.AppURL) +
|
||||||
`\w+/\w+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#]\S+.(\S+)?)?\b`)
|
`\w+/\w+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#]\S+.(\S+)?)?\b`)
|
||||||
}
|
})
|
||||||
return issueFullPattern
|
return issueFullPattern
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ import (
|
||||||
|
|
||||||
// Init initialize regexps for markdown parsing
|
// Init initialize regexps for markdown parsing
|
||||||
func Init() {
|
func Init() {
|
||||||
getIssueFullPattern()
|
|
||||||
NewSanitizer()
|
NewSanitizer()
|
||||||
if len(setting.Markdown.CustomURLSchemes) > 0 {
|
if len(setting.Markdown.CustomURLSchemes) > 0 {
|
||||||
CustomLinkURLSchemes(setting.Markdown.CustomURLSchemes)
|
CustomLinkURLSchemes(setting.Markdown.CustomURLSchemes)
|
||||||
|
|
Loading…
Reference in New Issue