文書フォーマットと処理

文書フォーマットとは、次のようなもの。型ではあるが、慣例に従い「フォーマット」と呼ぶ。

  1. HTML
  2. MD - Markdown
  3. JSON
  4. JSONL - JSON Lines
  5. STR -- string, plain text

unifiedフレームワーク/エコシステムで考えるとして、小文字はオブジェクト化された型とする。

  1. hast
  2. mdast
  3. json
  4. jsonl = List<json> ⊆ json
  5. string

部分写像の圏で考えて、全域写像には @tot でアノテーションする。

  1. JSON.parse : STR → json
  2. @tot JSON.stringify : json → STR

unifiedのプロセッサだと以下。波括弧で囲まれた名前はパッケージ名。

  1. {remark-parse}/parse : STR → mdast
  2. @tot {remark-rehype}/transform : mdast → hast
  3. @tot {rehype-stringify}/stringify : hast → STR

hastツリーを見て目次を挿入する処理なら、

  • @tot makeToc : hast → hast

フォーマットを文書〈半構造化データ〉の集合と考えて、直積と直和を持つ圏になる。処理〈プロセッサ〉は射となる。文書処理圏〈document processing category〉だ。

unifiedは文書処理の基盤となり得ると思うが、モジュールシステムが錯綜しているので、名付けに困る。