マークダウン形式のテキストを取得しました。それをテンプレートに戻して、html として表示できるようにしたいと考えています。このために、Handlebars ヘルパーを定義しました。
Handlebars.registerHelper('markdown_highlight', function (options) {
var converter = new Showdown.converter();
var res = '';
var html =converter.makeHtml(options.fn(this));
var high = hljs.highlightAuto(html).value;
res += high;
return res;
});
結果はフォーマットされた状態で出力されますが、html として直接表示されます。
pre><code> class Foo(object): def __init__(self, i, j): self.i, self.j = i, j def __str__(self): return “(%d, %d)” % (self.i, self.j) def __setitem__(self, idx, v): if idx == 0: self.i = v elif idx == 1: self.j = v else: raise RuntimeError(“Index out of bounds [0,1]”) </code></pre> <p>Make a subclass of Foo, named Bar, that implements the special methods <strong>eq</strong> and <strong>repr</strong>, such that the following code works: </p> <pre><code>&gt;&gt;&gt; f = Bar(1,2)age 3 &gt;&gt;&gt; g = Bar(2,2) &gt;&gt;&gt; f == g False &gt;&gt;&gt; g == eval(repr(g)) True &gt;&gt;&gt; g[0] = 1 &gt;&gt;&gt; f == g True </code></pre>
ヘルパー関数で何が起こっているかはそれほど重要ではありませんが、返された html が html として表示されるようにする方法を誰かが説明してくれるかもしれません。