|
@ -7,6 +7,13 @@ var escapeHtmlKeepEntities = require('./helpers').escapeHtmlKeepEntities; |
|
|
var unescapeMd = require('./helpers').unescapeMd; |
|
|
var unescapeMd = require('./helpers').unescapeMd; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function escapeUrl(str) { |
|
|
|
|
|
try { |
|
|
|
|
|
return encodeURI(str); |
|
|
|
|
|
} catch (__) {} |
|
|
|
|
|
return ''; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// check if we need to hide '\n' before next token
|
|
|
// check if we need to hide '\n' before next token
|
|
|
function getBreak(tokens, idx) { |
|
|
function getBreak(tokens, idx) { |
|
|
if (++idx < tokens.length && |
|
|
if (++idx < tokens.length && |
|
@ -17,7 +24,6 @@ function getBreak(tokens, idx) { |
|
|
return '\n'; |
|
|
return '\n'; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var rules = {}; |
|
|
var rules = {}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -101,7 +107,7 @@ rules.paragraph_close = function (tokens, idx /*, options*/) { |
|
|
|
|
|
|
|
|
rules.link_open = function (tokens, idx /*, options*/) { |
|
|
rules.link_open = function (tokens, idx /*, options*/) { |
|
|
var title = tokens[idx].title ? (' title="' + escapeHtmlKeepEntities(tokens[idx].title) + '"') : ''; |
|
|
var title = tokens[idx].title ? (' title="' + escapeHtmlKeepEntities(tokens[idx].title) + '"') : ''; |
|
|
return '<a href="' + escapeHtmlKeepEntities(tokens[idx].href) + '"' + title + '>'; |
|
|
return '<a href="' + escapeHtml(escapeUrl(tokens[idx].href)) + '"' + title + '>'; |
|
|
}; |
|
|
}; |
|
|
rules.link_close = function (/*tokens, idx, options*/) { |
|
|
rules.link_close = function (/*tokens, idx, options*/) { |
|
|
return '</a>'; |
|
|
return '</a>'; |
|
@ -109,7 +115,7 @@ rules.link_close = function (/*tokens, idx, options*/) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rules.image = function (tokens, idx, options) { |
|
|
rules.image = function (tokens, idx, options) { |
|
|
var src = ' src="' + escapeHtmlKeepEntities(tokens[idx].src) + '"'; |
|
|
var src = ' src="' + escapeHtml(escapeUrl(tokens[idx].src)) + '"'; |
|
|
var title = tokens[idx].title ? (' title="' + escapeHtmlKeepEntities(tokens[idx].title) + '"') : ''; |
|
|
var title = tokens[idx].title ? (' title="' + escapeHtmlKeepEntities(tokens[idx].title) + '"') : ''; |
|
|
var alt = ' alt="' + (tokens[idx].alt ? escapeHtmlKeepEntities(tokens[idx].alt) : '') + '"'; |
|
|
var alt = ' alt="' + (tokens[idx].alt ? escapeHtmlKeepEntities(tokens[idx].alt) : '') + '"'; |
|
|
var suffix = options.xhtml ? ' /' : ''; |
|
|
var suffix = options.xhtml ? ' /' : ''; |
|
|