vivliostyle/vfm

メタデータと Frontmatter 再考

akabekobeko opened this issue · 5 comments

#76 と関連 PR にてメタデータ処理を実装したが、以下の課題により扱いを再考したい。

  • VFM の設定は Frontmatter、VFM/stringify 関数オプション、CLI オプションの 3 種類ある
    • これらの優先度と関係性について整理したい
  • Frontmatter だけで定義するのが理想ではないか?
    • Vivliostyle 開発者会議 May 2021 で挙げられた意見
    • 外部オプションではなく Markdown 文書そのものに動作と設定を定義するほうが管理面でも好ましいのではないか?
    • VFM は単一の Markdown を扱うのだから Frontmatter と重複するオプションを増やしても複雑化するだけ
    • VFM CLI と VFM 関数がどれぐらい使われているのか?という疑問もある
  • vivliostyle-cli として stringify 関数のオプションは必要
    • なにが必要かを知りたい
    • vivliostyle-cli は複数 Markdown を横断的に扱うので、個々の文書設定より優先的されるオプションだけが必要なはず
  • Frontmatter 読み込み関数の外部公開
    • 主に vivliostyle-cli 用、Frontmatter の titletheme を独自に読み込んでいる処理を代替する
    • メタデータ以外 (math フラグなど) も含むため readSettings という感じの命名がよいか
    • VFM としてもメタデータと設定の読み込みにこれを利用したい

本 issue と #76 の棲み分け。

  • #76 は Frontmatter について議論
  • 本 issue は Frontmatter と VFM オプションも含む包括的なメタデータ、設定の取り扱いを議論

VFM 自身のテスト コード用に VFMstringify 関数のオプションは残したほうがいい。ただしオプションは VFM 自身の挙動に関するものへ留め、titlestylelanguage のようなコンテンツ系は廃止して Frontmatter に定義させるほうがよい。

コンテンツ系は VFM のプログラマブルなオプションではなく Markdown そのものに定義することを強制したほうが文書管理の面でも好ましいはず。挙動とデータは分けて考える。そして挙動をオプション or Frontmatter (の vfm)、データは Markdown の Frontmatter のみとしたい。

#76 の仕様を #105 として実装。オプションの titlestyle については CLI も含めて既に利用されているため現状維持とした。Frontmatter と被るものはこちらを優先する方針。

そして VFM 自身の挙動、例えば disableFormatHtml なども Frontmatter への追加を検討したい。現時点で vfmmaththeme のみとなっている。ここに挙動オプション系を追加予定。

VFM オプションのうち Frontmatter で被るものとコールバック関数を持つ replace を除いて残った以下を vfm で対応する。

  • partial
  • hardLineBreaks
  • disableFormatHtml

#113 で対応、それを反映した 1.0.0-alpha.26 をリリースしたので本件は close する。