adding #14
parent
4ae23d8f63
commit
741c87114b
@ -0,0 +1,66 @@
|
|||||||
|
const { marked } = require('marked')
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// copy from @marked/src/helpers.js, no export possible
|
||||||
|
function cleanUrl(sanitize, base, href) {
|
||||||
|
if (sanitize) {
|
||||||
|
|
||||||
|
let prot
|
||||||
|
|
||||||
|
try {
|
||||||
|
prot = decodeURIComponent(unescape(href))
|
||||||
|
.replace(nonWordAndColonTest, '')
|
||||||
|
.toLowerCase()
|
||||||
|
} catch (e) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (base && !originIndependentUrl.test(href)) {
|
||||||
|
href = resolveUrl(base, href)
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
href = encodeURI(href).replace(/%25/g, '%')
|
||||||
|
} catch (e) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
return href
|
||||||
|
}
|
||||||
|
|
||||||
|
const renderer = {
|
||||||
|
link(href, title, text) {
|
||||||
|
|
||||||
|
href = cleanUrl(this.options.sanitize, this.options.baseUrl, href)
|
||||||
|
|
||||||
|
if (href === null) {
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
|
||||||
|
let out = '<a href="' + href + '"'
|
||||||
|
|
||||||
|
if (title) {
|
||||||
|
out += ' title="' + title + '"'
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if url is external and add target
|
||||||
|
if (href.match(/^(http|https):\/\//)) {
|
||||||
|
out += ' target="_blank" rel="noopener" '
|
||||||
|
}
|
||||||
|
|
||||||
|
out += '>' + text + '</a>'
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = renderer
|
Loading…
Reference in new issue