fronma

Front MatterをパースするためのRustのライブラリをつくった。

Front Matterというのは…、GitHubやJekyllやHugoなどで利用される、Markdownファイルの先頭に記載されるメタデータの記述形式のこと。このサイトでも、記事ごとにタイトルを記述するために利用している。再利用する機会がありそうだったので、今回これをパースするロジックを、小さなライブラリにしておいた。

Front MatterはてっきりYAMLだけを使うものだと思っていたが、調べてみるとHugoではTOMLやJSON形式にも対応しているようだったので、これにも対応した。

「どの種類のFront Matterを利用するのか」をどう表現するのかについて、今回は型パラメーターを利用することにした。例えば、titleフィールドを持つTOML形式のFront Matterを持つ文字列をパースしたい場合、次のようなコードになる。型パラメーターを2つ取る関数は少し分かりづらくて、あまり納得いっていない。

#[derive(Deserialize)]
struct Headers {
  title: String,
}

let data = parse_with_engine::<Headers, Toml>(text);