技術の詳細
このプリンターは recast のプリンターのフォークであり、そのアルゴリズムは Wadler が「A prettier printer」で説明したものに置き換えられています。recast から残された不要なコードがある可能性があります。
基本的な考え方は、プリンターが AST を取得して出力の中間表現を返し、プリンターはその表現を使用して文字列を生成するというものです。これにより、プリンターは中間表現を「測定」して出力が 1 行に収まるかどうかを調べ、収まらない場合は改行することができます。
つまり、AST を印刷するロジックのほとんどは、特定のコマンドを含む出力を表す抽象表現を生成することです。たとえば、["(", line, arg, line, ")"]
は開括弧、引数、および閉じ括弧の連結を表します。ただし、これが 1 行に収まらない場合、プリンターは line
が指定されている場所で改行できます。
Playground には、Prettier の中間表現がどのように印刷されるかを調べるための特別なモードがあります。このモードを使用するには、サイドバー(「オプションを表示」ボタン)を開き、parser
オプションを特殊値 doc-explorer
に設定します。
詳細(不十分)は commands.md で確認できます。