You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
4.0 KiB
108 lines
4.0 KiB
3 years ago
|
|
||
|
# Permissive WWW Autolinks
|
||
|
|
||
|
With the flag `MD_FLAG_PERMISSIVEWWWAUTOLINKS`, MD4C enables recognition of
|
||
|
autolinks starting with `www.`, even if they do not exactly follow the syntax
|
||
|
of autolink as specified in CommonMark specification.
|
||
|
|
||
|
These do not have to be enclosed in `<` and `>`, and they even do not need
|
||
|
any preceding scheme specification.
|
||
|
|
||
|
The WWW autolink will be recognized when the text `www.` is found followed by a
|
||
|
valid domain. A valid domain consists of segments of alphanumeric characters,
|
||
|
underscores (`_`) and hyphens (`-`) separated by periods (`.`). There must be
|
||
|
at least one period, and no underscores may be present in the last two segments
|
||
|
of the domain.
|
||
|
|
||
|
The scheme `http` will be inserted automatically:
|
||
|
|
||
|
```````````````````````````````` example
|
||
|
www.commonmark.org
|
||
|
.
|
||
|
<p><a href="http://www.commonmark.org">www.commonmark.org</a></p>
|
||
|
````````````````````````````````
|
||
|
|
||
|
After a valid domain, zero or more non-space non-`<` characters may follow:
|
||
|
|
||
|
```````````````````````````````` example
|
||
|
Visit www.commonmark.org/help for more information.
|
||
|
.
|
||
|
<p>Visit <a href="http://www.commonmark.org/help">www.commonmark.org/help</a> for more information.</p>
|
||
|
````````````````````````````````
|
||
|
|
||
|
We then apply extended autolink path validation as follows:
|
||
|
|
||
|
Trailing punctuation (specifically, `?`, `!`, `.`, `,`, `:`, `*`, `_`, and `~`)
|
||
|
will not be considered part of the autolink, though they may be included in the
|
||
|
interior of the link:
|
||
|
|
||
|
```````````````````````````````` example
|
||
|
Visit www.commonmark.org.
|
||
|
|
||
|
Visit www.commonmark.org/a.b.
|
||
|
.
|
||
|
<p>Visit <a href="http://www.commonmark.org">www.commonmark.org</a>.</p>
|
||
|
<p>Visit <a href="http://www.commonmark.org/a.b">www.commonmark.org/a.b</a>.</p>
|
||
|
````````````````````````````````
|
||
|
|
||
|
When an autolink ends in `)`, we scan the entire autolink for the total number
|
||
|
of parentheses. If there is a greater number of closing parentheses than
|
||
|
opening ones, we don't consider the last character part of the autolink, in
|
||
|
order to facilitate including an autolink inside a parenthesis:
|
||
|
|
||
|
```````````````````````````````` example
|
||
|
www.google.com/search?q=Markup+(business)
|
||
|
|
||
|
(www.google.com/search?q=Markup+(business))
|
||
|
.
|
||
|
<p><a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a></p>
|
||
|
<p>(<a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a>)</p>
|
||
|
````````````````````````````````
|
||
|
|
||
|
This check is only done when the link ends in a closing parentheses `)`, so if
|
||
|
the only parentheses are in the interior of the autolink, no special rules are
|
||
|
applied:
|
||
|
|
||
|
```````````````````````````````` example
|
||
|
www.google.com/search?q=(business))+ok
|
||
|
.
|
||
|
<p><a href="http://www.google.com/search?q=(business))+ok">www.google.com/search?q=(business))+ok</a></p>
|
||
|
````````````````````````````````
|
||
|
|
||
|
If an autolink ends in a semicolon (`;`), we check to see if it appears to
|
||
|
resemble an [entity reference][entity references]; if the preceding text is `&`
|
||
|
followed by one or more alphanumeric characters. If so, it is excluded from
|
||
|
the autolink:
|
||
|
|
||
|
```````````````````````````````` example
|
||
|
www.google.com/search?q=commonmark&hl=en
|
||
|
|
||
|
www.google.com/search?q=commonmark&hl;
|
||
|
.
|
||
|
<p><a href="http://www.google.com/search?q=commonmark&hl=en">www.google.com/search?q=commonmark&hl=en</a></p>
|
||
|
<p><a href="http://www.google.com/search?q=commonmark">www.google.com/search?q=commonmark</a>&hl;</p>
|
||
|
````````````````````````````````
|
||
|
|
||
|
`<` immediately ends an autolink.
|
||
|
|
||
|
```````````````````````````````` example
|
||
|
www.commonmark.org/he<lp
|
||
|
.
|
||
|
<p><a href="http://www.commonmark.org/he">www.commonmark.org/he</a><lp</p>
|
||
|
````````````````````````````````
|
||
|
|
||
|
|
||
|
## GitHub Issues
|
||
|
|
||
|
### [Issue 53](https://github.com/mity/md4c/issues/53)
|
||
|
```````````````````````````````` example
|
||
|
This is [link](www.github.com/).
|
||
|
.
|
||
|
<p>This is <a href="www.github.com/">link</a>.</p>
|
||
|
````````````````````````````````
|
||
|
```````````````````````````````` example
|
||
|
This is [link](www.github.com/)X
|
||
|
.
|
||
|
<p>This is <a href="www.github.com/">link</a>X</p>
|
||
|
````````````````````````````````
|