Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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