文書フォーマットとは、次のようなもの。型ではあるが、慣例に従い「フォーマット」と呼ぶ。
- HTML
- MD - Markdown
- JSON
- JSONL - JSON Lines
- STR -- string, plain text
unifiedフレームワーク/エコシステムで考えるとして、小文字はオブジェクト化された型とする。
- hast
- mdast
- json
- jsonl = List<json> ⊆ json
- string
部分写像の圏で考えて、全域写像には @tot でアノテーションする。
- JSON.parse : STR → json
- @tot JSON.stringify : json → STR
unifiedのプロセッサだと以下。波括弧で囲まれた名前はパッケージ名。
- {remark-parse}/parse : STR → mdast
- @tot {remark-rehype}/transform : mdast → hast
- @tot {rehype-stringify}/stringify : hast → STR
hastツリーを見て目次を挿入する処理なら、
- @tot makeToc : hast → hast
フォーマットを文書〈半構造化データ〉の集合と考えて、直積と直和を持つ圏になる。処理〈プロセッサ〉は射となる。文書処理圏〈document processing category〉だ。
unifiedは文書処理の基盤となり得ると思うが、モジュールシステムが錯綜しているので、名付けに困る。