プラガブルにcsvとかのテーブルデータを別の形式に変換するやつ作った。

github.com

名前はKorという、これまた厨二ネーミング。*1

rubygemsとして実装したので、

$ gem install kor

でインストールできます。

csvやtsv、markdownのテーブル表記を、 これまたcsvやtsv、markdownに変換できる、 しかもプラガブルに拡張可能。 というやつです。

イメージ図

+----------+    +-----+    +----------+
|   csv    | => |     | => |   csv    |
+----------+    |     |    +----------+
+----------+    |     |    +----------+
|   tsv    | => | kor | => |   tsv    |
+----------+    |     |    +----------+
+----------+    |     |    +----------+
| markdown | => |     | => | markdown |
+----------+    +-----+    +----------+

使い方はcliだと、標準入力に変換前データを入力すると、標準出力に変換後のデータを出力します。

$ cat << CSV | kor csv markdown
foo,bar,baz
100,200,300
400,500,600
CSV
| foo | bar | baz |
| --- | --- | --- |
| 100 | 200 | 300 |
| 400 | 500 | 600 |

これを使えば、「君がくれたよくわかない(markdownのテーブルを見て)形式のデータ、エクセルで見たいからcsvにしてほしいんだけど。」 と突然言われても大丈夫。*2

$ kor markdown csv < table.md > table.csv

という感じで変換できます。

プラグインは入力(input)と出力(output)に分かれていて、 デフォルトでそれぞれにcsv,tsv,markdownを用意しています。

例えばcsvjsonに変換したければrequire 'kor/output/json'で動くgemをつくって、 kor csv jsonとよべばOK。

やはりプラガブルな機構にするなら、Rubyが楽そうですね*3。書ける人も多いし。

まだまだ発展しようがある部分も多いですが、いったん最低限の部分ができたのでリリースしてみました。

皆様のご意見をお待ちしております。

*1:FFプロダクトとも言える。

*2:あくまで想像ですよ

*3:golangとかでもプラガブルにできるのかな?