mirror of
https://github.com/danog/blackfriday.git
synced 2024-11-27 12:34:56 +01:00
Merge pull request #222 from icco/parens
Allow parentheses inside of links
This commit is contained in:
commit
ce3ffa70a0
19
inline.go
19
inline.go
@ -240,6 +240,8 @@ func link(p *parser, out *bytes.Buffer, data []byte, offset int) int {
|
|||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
brace := 0
|
||||||
|
|
||||||
// look for the matching closing bracket
|
// look for the matching closing bracket
|
||||||
for level := 1; level > 0 && i < len(data); i++ {
|
for level := 1; level > 0 && i < len(data); i++ {
|
||||||
switch {
|
switch {
|
||||||
@ -285,14 +287,27 @@ func link(p *parser, out *bytes.Buffer, data []byte, offset int) int {
|
|||||||
|
|
||||||
linkB := i
|
linkB := i
|
||||||
|
|
||||||
// look for link end: ' " )
|
// look for link end: ' " ), check for new opening braces and take this
|
||||||
|
// into account, this may lead for overshooting and probably will require
|
||||||
|
// some fine-tuning.
|
||||||
findlinkend:
|
findlinkend:
|
||||||
for i < len(data) {
|
for i < len(data) {
|
||||||
switch {
|
switch {
|
||||||
case data[i] == '\\':
|
case data[i] == '\\':
|
||||||
i += 2
|
i += 2
|
||||||
|
|
||||||
case data[i] == ')' || data[i] == '\'' || data[i] == '"':
|
case data[i] == '(':
|
||||||
|
brace++
|
||||||
|
i++
|
||||||
|
|
||||||
|
case data[i] == ')':
|
||||||
|
if brace <= 0 {
|
||||||
|
break findlinkend
|
||||||
|
}
|
||||||
|
brace--
|
||||||
|
i++
|
||||||
|
|
||||||
|
case data[i] == '\'' || data[i] == '"':
|
||||||
break findlinkend
|
break findlinkend
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -541,6 +541,20 @@ func TestInlineLink(t *testing.T) {
|
|||||||
|
|
||||||
"[link](<../>)\n",
|
"[link](<../>)\n",
|
||||||
"<p><a href=\"../\">link</a></p>\n",
|
"<p><a href=\"../\">link</a></p>\n",
|
||||||
|
|
||||||
|
// Issue 116 in blackfriday
|
||||||
|
"![](http://www.broadgate.co.uk/Content/Upload/DetailImages/Cyclus700(1).jpg)",
|
||||||
|
"<p><img src=\"http://www.broadgate.co.uk/Content/Upload/DetailImages/Cyclus700(1).jpg\" alt=\"\" /></p>\n",
|
||||||
|
|
||||||
|
// no closing ), autolinking detects the url next
|
||||||
|
"[disambiguation](http://en.wikipedia.org/wiki/Disambiguation_(disambiguation) is the",
|
||||||
|
"<p>[disambiguation](<a href=\"http://en.wikipedia.org/wiki/Disambiguation_(disambiguation\">http://en.wikipedia.org/wiki/Disambiguation_(disambiguation</a>) is the</p>\n",
|
||||||
|
|
||||||
|
"[disambiguation](http://en.wikipedia.org/wiki/Disambiguation_(disambiguation)) is the",
|
||||||
|
"<p><a href=\"http://en.wikipedia.org/wiki/Disambiguation_(disambiguation)\">disambiguation</a> is the</p>\n",
|
||||||
|
|
||||||
|
"[disambiguation](http://en.wikipedia.org/wiki/Disambiguation_(disambiguation))",
|
||||||
|
"<p><a href=\"http://en.wikipedia.org/wiki/Disambiguation_(disambiguation)\">disambiguation</a></p>\n",
|
||||||
}
|
}
|
||||||
doLinkTestsInline(t, tests)
|
doLinkTestsInline(t, tests)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user