@@ -303,8 +303,9 @@ class Parser
303
303
text = text .replace / !\[ ((?:[^ \] ] | \\\] | \\\[ )*? )\]\( ((?:[^ \) ] | \\\) | \\\( )+? )\) / g , (matches ... ) =>
304
304
escaped = htmlspecialchars @ escapeBracket matches[1 ]
305
305
url = @ escapeBracket matches[2 ]
306
- url = @ cleanUrl url
307
- @ makeHolder " <img src=\" #{ url} \" alt=\" #{ escaped} \" title=\" #{ escaped} \" >"
306
+ [url , title ] = @ cleanUrl url, yes
307
+ title = if not title? then escaped else " title=\" #{ title} \" "
308
+ @ makeHolder " <img src=\" #{ url} \" alt=\" #{ title} \" title=\" #{ title} \" >"
308
309
309
310
text = text .replace / !\[ ((?:[^ \] ] | \\\] | \\\[ )*? )\]\[ ((?:[^ \] ] | \\\] | \\\[ )+? )\] / g , (matches ... ) =>
310
311
escaped = htmlspecialchars @ escapeBracket matches[1 ]
@@ -317,8 +318,10 @@ class Parser
317
318
text = text .replace / \[ ((?:[^ \] ] | \\\] | \\\[ )+? )\]\( ((?:[^ \) ] | \\\) | \\\( )+? )\) / g , (matches ... ) =>
318
319
escaped = @parseInline (@ escapeBracket matches[1 ]), ' ' , no , no
319
320
url = @ escapeBracket matches[2 ]
320
- url = @ cleanUrl url
321
- @ makeHolder " <a href=\" #{ url} \" >#{ escaped} </a>"
321
+ [url , title ] = @ cleanUrl url, yes
322
+ title = if not title? then ' ' else " title=\" #{ title} \" "
323
+
324
+ @ makeHolder " <a href=\" #{ url} \" #{ title} >#{ escaped} </a>"
322
325
323
326
text = text .replace / \[ ((?:[^ \] ] | \\\] | \\\[ )+? )\]\[ ((?:[^ \] ] | \\\] | \\\[ )+? )\] / g , (matches ... ) =>
324
327
escaped = @parseInline (@ escapeBracket matches[1 ]), ' ' , no , no
@@ -987,15 +990,24 @@ class Parser
987
990
(@ markLines lines, start).join " \n "
988
991
989
992
990
- cleanUrl : (url ) ->
993
+ cleanUrl : (url , parseTitle = false ) ->
994
+ title = null
995
+
996
+ if parseTitle
997
+ pos = url .indexOf ' '
998
+
999
+ if pos > 0
1000
+ title = htmlspecialchars trim (url .substring pos + 1 ), ' "\' '
1001
+ url = url .substring 0 , pos
1002
+
991
1003
url = url .replace / ["'<>\s ] / g , ' '
992
1004
993
1005
if !! (matches = url .match / ^ (mailto:)? [_a-z0-9 -\.\+ ] + @[_\w -] + \. [a-z ] {2,} $ / i )
994
1006
url = ' mailto:' + url if not matches[1 ]?
995
1007
996
1008
return ' #' if (url .match / ^ \w + :/ i ) and not (url .match / ^ (https? | mailto):/ i )
997
1009
998
- url
1010
+ if parseTitle then [url, title] else url
999
1011
1000
1012
1001
1013
escapeBracket : (str ) ->
0 commit comments