文中に制御文字が混じっているのを見つけて自動修正するtextlintルール
制御文字は色々ありますが、通常の文中に出てくる制御文字は復帰(\r
)、改行(\n
)、タブ(\t
)など限られたものだけだと思います。それ以外の制御文字は文中に入ると文字化けしたりします。
次の記事では文中に制御文字が入った場合の問題を紹介しています。
最近、Slackアプリでバックスペースがおかしな文字が入っていたのも同じような原因です。
これらを見つけるtextlintルールとして@textlint-rule/textlint-rule-no-invalid-control-characterを作りました。
すべての制御文字を禁止すると改行すら出来なくなってしまうので次の制御文字は許可されています。 また、チェックするのはただの文字列中に制御文字が混じってる場合のみで、CodeBlockの中などはチェックしないので問題ありません。
許可されている制御文字
\r
\n
\t
許可されていない制御文字
その他のControl characterであるもの
\u0010
DATA LINK ESCAPE\u0019
ND OF MEDIUM- etc…
インストール
@textlint-rule/textlint-rule-no-invalid-control-characterはnpmでインストールできます。
npm install @textlint-rule/textlint-rule-no-invalid-control-character
使い方
.textlintrc
に設定するだけです。
{
"rules": {
"@textlint-rule/no-invalid-control-character": true
}
}
オプション
allow
:string[]
- 例外として許可したい制御文字を指定
{
"rules": {
"@textlint-rule/no-invalid-control-character": {
"allow": [
"\v"
]
}
}
}
おわりに
\u0019
などの制御文字が文中に入るのはIMのバグとか何らかの問題がある場合が殆どだと思うので、デフォルトで弾くのが良い気がします。
@textlint-rule/textlint-rule-no-invalid-control-characterに似たルールとして、Macでコピペすると濁点が分離する問題を見つけるtextlint-rule-no-nfdなどがあります。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。