プログラミングnanocとはnanocはRuby製の静的サイトジェネレーターです。静的サイトジェネレーターとは、固定的な内容のウェブサイトを作るのに使われるサイトジェネレーターです。ホームページ制作ツールのような複雑なIDEではなく、コマンドラインとエディタでサクっとサイトが作れるので、プログラマーには人気があります。昨今はそうしたツールでブログを公開する人も珍しくなくなりました。ちなみにこの記事ではnanocの使い方は説明しません。本家に丁寧な説明があるので、そちらを参照して下さい。jekyllとの違いRuby製の静的サイトジェネレーターといえば、jekyllも有名ですが、最近はnanocを主に使っています。理由は記事の変換処理を柔軟に扱えるからです。jekyllでも記事を変換する場合に、独自の処理を設定することは出来ますが、変換エンジン「そのもの」の切り替えしかできません。nanocでは、変換処理をfilterという単位で分割定義できて、それらを記事の「メタデータ」に応じて自由に組み合わせて適用させることができます。「コードハイライトの前処理は、プログラミング系の記事にだけ適用する」といった具合にです。サンプルケースマークダウンをCSSフレームワークと合わせて使った場合、デフォルトの出力では困ることがありますよね。タグに、そのCSSフレームワークで使う特別なクラス属性を付けたかったりとか。これはH2もちろん次のように変換されるわけですが、<h2>これはH2</h2>こういう風に出したい時もあるわけじゃないですか。class="my-header">これはH2</h2>こういう場合、そのまま生でタグを打ってもいいのですが、せっかくマークダウンを使っているのですから、楽をしたいものです。いうわけで、nanocのfilterを定義しちゃいましょう。filterを定義する要件定義として、次のように宣言したら目的のコードが出力される、としましょう。これはH2]要はこのコードをマークダウンにかける前に、正規表現で目的のコードに変換すればいいのです。そこでlib/filters.rbなどというファイルを作り、次のような処理を書いて、my_headerという識別子のフィルタを定義します。endend次にRulesというファイルで、今作ったmy_headerというfilterを、マークダウン変換の前に差し込みます。endendしかしこれだと、全てのマークダウンファイルにmy_headerフィルタを通してしまいますよね。itemにuse_my_syntaxというメタデータが設定されているときだけ適用させるようにしてみます。endend比較としてjekyllの独自コンバーター定義の方法を抜粋しておきます。endend上記のconvertという関数を拡張するわけですが、見たらわかるように引数として元記事のcontentしかもらえないわけです。nanocでは記事に付いたメタデータを見ながら処理を分岐できるので、これは大きなアドバンテージです。ちなみに記事のメタデータを付ける方法は、記事の先頭に次のようなヘッダーを書くだけです。true---ヘッダーはYAMLで記述します。最後に最後に、nanoc.ymlのpruneについて。]auto_pruneを有効にすると、使用されていないファイルを削除してくれます。デフォルトでは有効になっていませんが、trueに設定することをおすすめします。これを有効にしてないと、元記事のファイル名を変えた時に、古いファイルが出力先に残り続けてしまいます。あるときにtop.mdというファイルを、welcome.mdに変えたくなったとしましょう。そのまま放置してしまうと、出力先にtop/index.htmlというファイルが残ってしまいます(a.mdはa/index.htmlに出力されるのがデフォルトのルール)。pruneをtrueにしておくとtop/index.htmlは自動で削除されます。v1.3.1をリリースアプリケーションにTypeNovelのコンパイラを組み込むTypeNovelをTypeScriptで書き直しました月別アーカイブはてなブログをはじめよう!converticalさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。