Quartz v4アップデート したところ、preactとremarkの知識が必要になったので調べた。
いくつかの用語や概念を知っている必要があって、初学者には厳しかったので調べたことをまとめておく。
unified
テキストからASTを作成したり、そのAST木を解析して別のテキストに変換したりするためのJavaScript製フレームワークのこと。
https://unifiedjs.com
構文木は自然言語を名詞や動詞など、構文にそって解析して木構造としたもので、 Abstract Syntax Tree(AST, 抽象構文木)はその構文木から、文法のための記号や助詞など、意味のない部分を除いた木構造。
parser, compiler, transformerといった各コンポーネントに分かれて、ファイルを仮想化したvfile(virtualized file)を用いてデータを受け渡しする
unifiedの中でMarkdownの処理を担当する。
Markdownをparseする remark-parse、compileするremark-stringify、ASTやHTMLへの変換を担当する各transformerがある。
MarkdownのASTをmdastという。
rehype
unifiedの中でHTMLの処理を担当する。
HTMLのASTをhastという。
unifiedの処理の流れ
https://github.com/unifiedjs/unified#overview に図が書かれている通りで、
Input → parser -(ASTに変換)→ transformer → compiler → Output として
ASTに対して独自の編集を行うためtransformerを作成する。
トラバース
unist-util-visit を使う。
現在のASTを表示する
プラグイン開発にあたって、現在のASTがどうなっているかを確認するために便利なヘルパーが用意されている。
unist-util-inspect の inspect
にtreeを渡すと、木構造をprintできる。
参考リンク