最後の行が—
(EMダッシュ)で始まっていた場合はfigure
要素で括り、かつその最後の行を引用元の表記としてfigcaption
要素に変換する。
> This is a quote.
>
> — <cite>[txt](href)</cite>
<figure>
<blockquote>
<p>This is a quote.</p>
<figcaption>— <cite><a href="href">txt</a></cite></figcaption>
</blockquote>
> This is a quote.
<blockquote>
<p>This is a quote.</p>
</blockquote>
const marked = require("marked");
const markupBlockquote = content => {
const lines = content
.trim()
.split("\n")
.map((line, idx, arr) => {
if (idx !== arr.length -1 || !line.startsWith("<p>—")) {
return line;
}
return `${line.replace(/\bp(?=>)/g, "figcaption")}`;
});
if (!lines[lines.length - 1].endsWith("</figcaption>")) {
return `<blockquote>
${lines.join("\n")}
</blockquote>
`
}
return `<figure>
<blockquote>
${lines.join("\n")}
</blockquote>
</figure>
`
};
const renderer = new marked.Renderer();
renderer.blockquote = markupBlockquote;
module.exports = t => marked(t, {
renderer: renderer
});