Closed akabekobeko closed 2 years ago
以下のイベントにおける「Vivliostyle 開発会議」で VFM ドッグフーディングの一環として vivliostyle-ssg というツールを作ることになった。現在、私の個人プライベート リポジトリーで試験版を開発中。
その開発において GatsbyJS のようにサイト全体と Markdown 単位の個別ページ Frontmatter に定義されたメタデータを合成したくなった。例えば Title | Site Name
のように。これを実現する場合、現在は VFM でフル HTML を生成してからテキスト置換で加工するか readMetadata
で得られたものを加工して自前で <body>
以上の HTML を生成、それを partial
で部分 HTML にしたコンテンツと合成する必要がある。
メタデータ取得用の readMetadata
とコンテンツの partial
があるのだから前者から <body>
以上の HTML を生成する機能も欲しく、ちょうど vivliostyle-ssg で利用したくなったので実装を検討する。
HTML を生成する機能だと <body>
にコンテンツ HTML をどう挿入するかが課題になる。文字列化された HTML では AST にようにプログラミング言語から直に処理可能な構造が失わているため、安全性を欠くテキスト置換に頼らなければならない。
そのため stringify
関数のオプションにメタデータを追加して、これを元にフル HTML を生成するモードを付けるほうがよさそう。VFM を利用するプログラム名を ssg とした場合の想定処理。
readMetadata
により Markdown からメタデータを読み込むstringify
を呼び出す既に VFM
はこのような設計となっている。stringify
にメタデータを指定して上書き可能にすればよさそう。
Goals
Generate
<body>
and above HTML from metadata.When developing SSG (Static Site Generator) using VFM, I want HTML that composite the metadata of the entire site and the page.
<body>
The above hierarchy is generated from metadata (composite of entire site and individual pages)partial
modePrior Art
GatsbyJS
Discussion
None.