仕事をしているときにMarkdownの大量のリストをチェックリストに変換したくなったのでそのためのツールを作りました。"list to todo-list"の略で"litto"。
GitHubリポジトリはsosukesuzuki/littoです。
使い方
npmを使ってインストールできます。
$ npm install -g litto
ファイル名を指定して使うことができます。下のようなファイルを./hoge.md
として作成します。
# ./hoge.md
- item1
- item2
ファイル名を指定してコマンドを叩くと結果が表示されます。
$ litto ./hoge.md
# ./hoge.md
- [ ] item1
- [ ] item2
なんかちょっと汚いのでPrettierで整形するためのオプションを用意しました。--format
オプションをつけるとフォーマットした結果が表示されます。
$ litto --write --format ./hoge.md
# ./hoge.md
- [ ] item1
- [ ] item2
--write
コマンドをつけるとファイルを上書きします。
$ litto --write ./hoeg.md
./hoge.md
Done.
仕組み
unifiedとremarkというライブラリを使っています。これらのライブラリを使ってMarkdownをパースしてASTに変換します。詳しい使い方はそれぞれのドキュメントを読んでください。
これらのライブラリを使って生成されるASTはmdastに準拠しています。そしてListItemはchecked
というプロパティの有無でリストかチェックリストかの判別をしているので、ASTを再帰的に走査してListItemのchecked
を(初期値の)false
にすることで変換を実装しています。
CLIコマンドとしてそれなりの出来にするためにcommanderを使っています。
感想
誰も使わなさそうですが、JavaScriptからもちゃんと叩けるようにしたいですね。