prh と textlint-rule-prh
テキストファイルの表記揺れをチェックする Node.js 製ツールに、proofread-helper (prh) というものがあります。
これを使うと、例えば、テキストファイル内の javascript
という文字列を JavaScript
に自動的に修正できたりします(大文字・小文字の構成)。
textlint の作者の azu さんが、この prh を textlint から使えるようにするルール定義 textlint-rule-prh を作成してくれています。 prh を直接使うよりも、Markdown ファイルの構文をうまく扱ってくれるみたいです(リンク内のテキストは対象外にするなど)。
インストール
ルールのインストール
textlint 用のルールモジュールである textlint-rule-prh
は、次のようにインストールします(textlint 自体はインストール済みであるとします)。
proofread-helper を別途インストールする必要はありません。
設定ファイルの作成
proofread-helper (prh) の設定ファイル(表記揺れチェックルール)は、下記のような感じで Yaml ファイルで作成します。
textlint の設定ファイルで textlint-rule-prh
を有効にし、上記のルールファイルのパスを指定します。
実行
あとは、textlint を実行すれば、表記揺れを検出してくれます。
textlint-rule-prh
は auto fix に対応しているので、 --fix
オプションを指定して実行すれば、ファイル内の表記揺れを自動で修正して保存してくれます。
表記揺れルール
proofread-helper (prh) では柔軟な表記揺れルールを定義することができます。 書き方のサンプルは 本家の記述例 を見ると分かりやすいですが、いくつかポイントをまとめておきます。
大文字と小文字の統一
このように expected
のみを指定しておくと、大文字・小文字の違いだけがある単語を検出してくれます(例: JQuery
→ jQuery
)。
パターンに一致したものを修正
pattern
に一致する単語が見つかったら、それを expected
に修正するよう促します。
次のように pattern
に複数の単語を指定することもできます(pattern
と patterns
は同義)。
pattern
の部分に /正規表現/
という指定も可能です。
変換のテスト仕様を記述する
正規表現でパターン指定した場合は、 specs
プロパティでテストを記述しておくことよいでしょう。
設定したルールで from
を to
にうまく変換できない場合は、spec failed となり動作を停止します。
サフィックスを追加するときの注意
例えば、「サーバ」を「サーバー」にするなど、既存の単語にサフィックスを追加する場合はちょっと注意が必要です。
単純に pattern
に「サーバ」と指定すると、既に「サーバー」になっているものを「サーバーー」に修正しようとしてしまうので、上記のように指定しておく必要があります。
「ユーザ」を「ユーザー」にしたいときなども同様です。
スペースが必要な単語
スペースなしの VSCode
を、スペースありの VS Code
に修正するよう促します。
上記の正規表現だと、もともと正しい VS Code
にもヒットしてしまいそうですが、その場合はうまいこと無視してくれるみたいです。
短い英単語では wordBoundary 指定しておく
js
や id
といった、短い単語の大文字・小文字を変換するときは、次のように wordBoundary
オプションを true
に設定しておくのがよいようです。
こうしておくと、ある単語の部分文字列として出現したときに無視してくれるようになります。