以下の続きです。
フロントマターを使うことで、Textboxでの情報操作の可能性がぐんと広がったのですが、その一助になったのが、フロントマターと合わせて使うJSONの存在です。
具体的には、Textbox上に存在するすべてのmdファイルにidを割り当て、プロパティーなどの情報を保存するJSONを作ったのです。
例として項目の一つを取り上げれば、こんな感じ。
{
"id": "663afc3941ff8cd94cf588ded292e32e",
"title": "list/miniWindow.md",
"created": 1717572041251,
"updated": 1717572041251
}
これが1ページ分の項目で、同じような項目がページ分存在しているJSONを作りました。
で、ファイルを保存したとき、そのフロントマターに特定の情報が書き込まれていたら、上のJSONにそれも付け加えるという処理を増やしたのです。
{
"created": 1709596494.1170871,
"date": "2024",
"id": "81235a697dddca60ce9165574961b66c",
"taxonomy": "Taxation",
"title": "2023年分の確定申告.md",
"type": "project",
"updated": 1709596494.1170871
}
このページではフロントマターにtype: projectが含まれていたので、それがJSONに保存されています。
こうしておくと、あ〜ら不思議。type: projectというフロントマターを含むページを開いたら、JSONを全走査して、同じタイプを持つページを探し出し、それを「お仲間ページ」として表示するという機能が実装できるという次第です。
これまでのTextboxは、純粋にファイル名だけで対象のページを探していたので、メタ情報を付与するには、ファイル名を「hoge_type_project.md」のようなまどろっこしいものにする必要がありました。しかし、ファイル情報を扱うJSONを作るようになったおかげで、ファイル名はそのままで、その内部にメタ情報を持つことができるようになったのです。
このやり方をさらに発展させて、TODOの抽出もできるようになりました。それはまた次回。