Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

nodeでmarkdownを使う その2:既存のタグの挙動を変更する

以前の記事でnodejsでmarkdownを使う"marked"を紹介しました。
今回は少し突っ込んで、既存のwikiタグの挙動を変更する方法を紹介します。

実際のところ

見出しのタグについて、挙動をgithubっぽく変更する場合を想定します。
標準的headingメソッドに定義されますが、これに手を突っ込むわけです。

var marked = require('marked');
var renderer = new marked.Renderer();
 
renderer.heading = function (text, level) {
  var escapedText = text.toLowerCase().replace(/[^\w]+/g, '-');
 
  return '<h' + level + '><a name="' +
                escapedText +
                 '" class="anchor" href="#' +
                 escapedText +
                 '"><span class="header-link"></span></a>' +
                  text + '</h' + level + '>';
},
 
console.log(marked('# heading+\n ## yeah\n it is simple', { renderer: renderer }));

結果はこんな感じ

<h1><a name="heading-" class="anchor" href="#heading-"><span class="header-link"></span></a>heading+</h1><h2><a name="yeah" class="anchor" href="#yeah"><span class="header-link"></span></a>yeah</h2><p> it is simple</p>

hrやimage、blockquoteなどなど既存のwikiタグには手を入れる事ができます。

参考もと

marked