diff --git a/lib/marked.js b/lib/marked.js index 15f61cb3..b2167389 100644 --- a/lib/marked.js +++ b/lib/marked.js @@ -128,10 +128,15 @@ block.token = function lex(str, tokens, line) { var keys = block.keys , len = keys.length; + var i + , key + , rule + , cap; + while (str.length) - for (var i = 0; i < len; i++) { - var key = keys[i] - , rule = block[key]; + for (i = 0; i < len; i++) { + key = keys[i]; + rule = block[key]; cap = rule.exec(str); if (!cap) continue; @@ -278,12 +283,17 @@ inline.lexer = function(str) { var rules = inline , keys = inline.keys , len = keys.length - , i - , key - , rule , out = '' , links = tokens.links; + var i + , key + , rule + , cap + , link + , text + , href; + while (str.length) { for (i = 0; i < len; i++) { key = keys[i]; @@ -311,7 +321,7 @@ inline.lexer = function(str) { break; case 'link': case 'reflink': - var link = links[cap[2]] || ''; + link = links[cap[2]] || ''; out += '' - + email - + ''; + text = mangle(cap[1]); + href = mangle('mailto:') + text; } else { - var href = escape(cap[1]); - out += '' - + href - + ''; + text = escape(cap[1]); + href = text; } + out += '' + + text + + ''; break; case 'strong': out += ''