コメント_2019-12-08_175412

U+0008等の制御文字を検知・除去してくれる textlint-rule-no-control-character を公開しました

背景

Macで入力されたテキストに、偶にU+0008(BACKSPACE)U+000B(垂直タブ)といった制御文字が混在しているということがあり、去年仕事で悩まされることがありました。

最近でも制御文字が混在しているのを見つけて修正Pull Request送ったりもしました。

画像1

macOSだと何もないように見えても、Windowsだと豆腐が見えます。

この辺りtextlintで自動的に検知や修正やってくれそうと思い、自分でルールを作ってみました。それが以下になります。

GitHub

npm

使い方

textlint自体の使い方はドットインストールに動画があります。

このルールをtextlint導入済みプロジェクトに追加するためにパッケージをインストールします。

npm install textlint-rule-no-control-character

次に.textlintrcにこのルールを使うと記述します。

{
   "rules": {
       "textlint-rule-no-control-character": true
   }
}

検知は textlint {filename} で以下のように検知できます。

コメント 2019-12-08 175412

コメント 2019-12-08 175937

自動修正にも対応しており、--fixオプションをつけるだけでできます。

コメント 2019-12-08 180212

コメント 2019-12-08 180305

やりました😉

おまけ:Visual Studio Codeにはプラグインがあるよ

この制御文字問題はみんな悩まされているようなので、それを対応するプラグインがすでにあります。

感想…?

textlintルールはTypeScriptで作れるので勉強中の身としてはありがたかったです。
以下のコマンドで基本プロジェクトが作れるので中身をサクッと書き換えれば簡単にルールが作れました。

npx create-textlint-rule {rule-name} --typescript

今回はじめてnpmパッケージ公開しました。アカウント作って設定してpublishするだけでした。簡単!

そして公開してから既に同様のtextlint-ruleがあるのを発見しました😇


😉