Jekyllのプラグイン作成で複数ファイルにまたがったタグをどう扱えばいいのかわからない話

あらすじ

Jekyll ではてなダイアリーのような脚注をつけられるプラグインを作った。

文中に登場した ref タグの引数を集めて ref_anchor タグが打たれた箇所にリスト出力する、というもの。

こう書くと、

- 超スタンダード {{ " {% ref といわれている " }} %}
- 誰の PC にも入っている {{ " {% ref といわれている " }} %}
- 誰でも簡単に使える {{ " {% ref といわれている " }} %}
- きめ細かいデザインが可能
- 画像やフローの挿入も簡単

(略)

{{ " {% ref_anchor " }} %}

こうなる。

ref

(略)

refanc

一応、やりたいことはできたんだけど、以下のようなことができなくて力技でなんとかした。

できる

同じ .md ファイル内に ref タグと ref_anchor タグを書くと問題なくいける。

上記あらすじの例がそう。

できない

ref タグは .md ファイル内に。 ref_anchor タグは「記事の一番最後に一つあればいい」ということでテーマ内に書いて集約したい。

と思って、 テーマ( _includes/themes/twitter/post.html ) に書いてみたが、これだと脚注が拾えなかった…。

デバッグしてみると、どうもレンダリングの順番で、 _includes/themes/twitter/post.html(ref_anchor) -> _posts/xxx.md(ref) になっているから拾えないっぽい?

対応

うまくできる方法もあるのかもしれないけど、とりあえずグローバル変数を使う方法で脚注を拾うことに成功した。

もう一つ、記事と脚注の対応をjson形式とかでどっかにファイルに吐き出して、それを読み込むという手も考えたんだけど、どっちがいいんだろう。

あんまりグローバル変数使いたくないんだけど、他に思いつかなかった。

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2013/09/07 [Ruby] [Git] [Jekyll] Jekyllバージョンアップの際に思いのほか手こずった話 てっく煮さん製プラグインの更新に追従したい編
  2. 2013/08/07 [Ruby] [Jekyll] [Git] Jekyllバージョンアップの際に思いのほか手こずった話 Jekyll Bootstrapの更新に追従したい編
  3. 2013/05/27 [Jekyll] [Ruby] Jekyll@GitHub Pagesの運用形態を変えたのでAnalyticsの設定が効かなくなっていた
  4. 2013/05/23 [Jekyll] [Liquid] [Ruby] 記事の目次を出力するJekyllプラグインの改良
  5. 2013/05/21 [Jekyll] [Git] GitHub PagesでJekyllプラグインを使えるようにするには…
  6. 2013/04/11 [Ruby] [Jekyll] Jekyllのバージョンを 0.12.0 にあげた
  7. 2015/08/06 [Jekyll] [Liquid] Jekyllで出力するタグをソートする 解決編
  8. 2015/03/14 [Jekyll] Jekyllがデフォルトでは外部から繋がらなくなってたよ
  9. 2014/11/30 [Jekyll] kawasaki.rb #018 でJekyllドキュメント翻訳のLTをしてきた
  10. 2014/07/26 [Jekyll] [Translate] jekyllrb-ja キックオフを実施しました
  11. 2014/06/22 [Jekyll] [Translate] Jekyllドキュメントを翻訳してなんとなくわかってきたもの
  12. 2014/04/01 [Ruby] [Jekyll] [イベント] kawasaki.rb #010 で発表してきました #kwskrb
  13. 2014/03/13 [Jekyll] [GitHub] Jekyllドキュメントの日本語翻訳リポジトリ「jekyllrb.com.jp」を作成しました
  14. 2014/01/28 [Jekyll] [GitHub] [Ruby] Jekyllプロジェクトへpull requestを行う手順(したとは言っていない)
  15. 2012/11/12 [Ruby] [Jekyll] はてなダイアリーのエントリをJekyllへ移行する