軽量でPluggableなJS製Markdownパーサ&レンダラのMarkdown-It。
例えばa
タグは全てtarget="_blank"
にしたいなどの要求を実現するにはレンダラの処理を一部変更する必要がある。
その変更方法について説明する。
md.renderer.rules
を書き換える
以下のようにlink_open
という名前のルールを書き換えることで、target="_blank"
をデフォルトに出来る。
const md = new MarkdownIt()
// Remember old renderer, if overriden, or proxy to default renderer
var defaultRender = md.renderer.rules.link_open || function(tokens, idx, options, env, self) {
return self.renderToken(tokens, idx, options)
}
md.renderer.rules.link_open = function (tokens, idx, options, env, self) {
// If you are sure other plugins can't add `target` - drop check below
var aIndex = tokens[idx].attrIndex('target')
if (aIndex < 0) {
tokens[idx].attrPush(['target', '_blank']) // add new attribute
} else {
tokens[idx].attrs[aIndex][1] = '_blank' // replace value of existing attr
}
// pass token to default renderer.
return defaultRender(tokens, idx, options, env, self)
}