mirror of
https://github.com/yuin/goldmark
synced 2025-03-04 23:04:52 +00:00
Merge pull request #191 from moorereason/iss190
Fix Linkify to allow host with beginning single-letter domain label
This commit is contained in:
commit
f3e20f4795
2 changed files with 22 additions and 10 deletions
|
|
@ -169,3 +169,11 @@ http://server.intranet.acme.com:1313
|
||||||
//- - - - - - - - -//
|
//- - - - - - - - -//
|
||||||
<p><a href="http://server.intranet.acme.com:1313">http://server.intranet.acme.com:1313</a></p>
|
<p><a href="http://server.intranet.acme.com:1313">http://server.intranet.acme.com:1313</a></p>
|
||||||
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
|
||||||
|
17
|
||||||
|
//- - - - - - - - -//
|
||||||
|
https://g.page/foo
|
||||||
|
//- - - - - - - - -//
|
||||||
|
<p><a href="https://g.page/foo">https://g.page/foo</a></p>
|
||||||
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,9 @@ import (
|
||||||
"github.com/yuin/goldmark/util"
|
"github.com/yuin/goldmark/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
var wwwURLRegxp = regexp.MustCompile(`^www\.[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]+(?:[/#?][-a-zA-Z0-9@:%_\+.~#!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`)
|
var wwwURLRegxp = regexp.MustCompile(`^www\.[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?:[/#?][-a-zA-Z0-9@:%_\+.~#!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`)
|
||||||
|
|
||||||
var urlRegexp = regexp.MustCompile(`^(?:http|https|ftp)://[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]+(?::\d+)?(?:[/#?][-a-zA-Z0-9@:%_+.~#$!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`)
|
var urlRegexp = regexp.MustCompile(`^(?:http|https|ftp)://[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?::\d+)?(?:[/#?][-a-zA-Z0-9@:%_+.~#$!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`)
|
||||||
|
|
||||||
// An LinkifyConfig struct is a data structure that holds configuration of the
|
// An LinkifyConfig struct is a data structure that holds configuration of the
|
||||||
// Linkify extension.
|
// Linkify extension.
|
||||||
|
|
@ -24,10 +24,12 @@ type LinkifyConfig struct {
|
||||||
EmailRegexp *regexp.Regexp
|
EmailRegexp *regexp.Regexp
|
||||||
}
|
}
|
||||||
|
|
||||||
const optLinkifyAllowedProtocols parser.OptionName = "LinkifyAllowedProtocols"
|
const (
|
||||||
const optLinkifyURLRegexp parser.OptionName = "LinkifyURLRegexp"
|
optLinkifyAllowedProtocols parser.OptionName = "LinkifyAllowedProtocols"
|
||||||
const optLinkifyWWWRegexp parser.OptionName = "LinkifyWWWRegexp"
|
optLinkifyURLRegexp parser.OptionName = "LinkifyURLRegexp"
|
||||||
const optLinkifyEmailRegexp parser.OptionName = "LinkifyEmailRegexp"
|
optLinkifyWWWRegexp parser.OptionName = "LinkifyWWWRegexp"
|
||||||
|
optLinkifyEmailRegexp parser.OptionName = "LinkifyEmailRegexp"
|
||||||
|
)
|
||||||
|
|
||||||
// SetOption implements SetOptioner.
|
// SetOption implements SetOptioner.
|
||||||
func (c *LinkifyConfig) SetOption(name parser.OptionName, value interface{}) {
|
func (c *LinkifyConfig) SetOption(name parser.OptionName, value interface{}) {
|
||||||
|
|
@ -156,10 +158,12 @@ func (s *linkifyParser) Trigger() []byte {
|
||||||
return []byte{' ', '*', '_', '~', '('}
|
return []byte{' ', '*', '_', '~', '('}
|
||||||
}
|
}
|
||||||
|
|
||||||
var protoHTTP = []byte("http:")
|
var (
|
||||||
var protoHTTPS = []byte("https:")
|
protoHTTP = []byte("http:")
|
||||||
var protoFTP = []byte("ftp:")
|
protoHTTPS = []byte("https:")
|
||||||
var domainWWW = []byte("www.")
|
protoFTP = []byte("ftp:")
|
||||||
|
domainWWW = []byte("www.")
|
||||||
|
)
|
||||||
|
|
||||||
func (s *linkifyParser) Parse(parent ast.Node, block text.Reader, pc parser.Context) ast.Node {
|
func (s *linkifyParser) Parse(parent ast.Node, block text.Reader, pc parser.Context) ast.Node {
|
||||||
if pc.IsInLinkLabel() {
|
if pc.IsInLinkLabel() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue