unifiedの利用

Tenjinの方針は“ありもの利用”だから、unifiedは使う。

  • いわゆる“unified plugin”はすべてそのまま利用したい。
  • remark-cli のようにコマンドラインから使いたい。
  • したがって、remark-cli と同じ作りにする必要がある。
  • 設定ファイルもunifiedと共用できるように。

以前アタッチャーと呼ばれていたものが今はトランスフォーマー・プラグインになったようだ。アタッチャーと変換関数〈パフォーマー〉が、トランスフォーマー・プラグインとなり、むしろ分かりにくくなったと思う。

設定ファイルはけっこうややこしい。

  1. ./.remarkignore ファイルで、無視する〈処理しない〉ファイルを指定する。
  2. ./.remarkrc ファイル、./.remarkrc.js ファイルから設定を読む。
  3. ./package.json ファイルの remarkConfig フィールドから設定を読む。

Tenjinワーキングディレクトリ内に、unified plugin のnpmパッケージ群(./node_modules/ の下)をインストールして、文書ディレクトリごとに、.remarkignore, remarkrc を置くことになるのだろう。

運用としては、package.json 内に例えば、

"scripts": {
   
    "format": "remark . --output",
   
  },

これで、npm run format が使えるようになった。次は設定:

"remarkConfig": {
    "settings": {
      "bullet": "*", // Use `*` for list item bullets (default)
      // See <https://github.com/remarkjs/remark/tree/main/packages/remark-stringify> for more options.
    },
    "plugins": [
      "remark-preset-lint-consistent", // Check that markdown is consistent.
      "remark-preset-lint-recommended", // Few recommended rules.
      [
        // Generate a table of contents in `## Contents`
        "remark-toc",
        {
          "heading": "contents"
        }
      ]
    ]
  },

いずれにしても、unifiedでは並列結合〈モノイド積〉とストリーミングがないので、これを追加したい。最小限の変更で追加したい。

unifiedプラグイン〈unifiedプロセッサ〉は、node_modules/ 以下にインストールされていれば、静的または動的ローディングはできる。ロードすればドライバーにセット(.use(xxx))できる。セットアプ〈setup | configure〉したドライバーを process(input) すれば処理が実行される。