THINKING MEGANE

CSVテキストをMarkdown形式のテーブルに変換するツールをつくった

Markdown形式のテーブル記法をいつまでたってもうろ覚えで、毎回検索したり、変換サイトにアクセスするのが面倒だったのでツールをつくりました。嘘です。Go書きたかっただけです。

使い方

CSVテキストを標準入力から受け取って整形済みのMarkdown形式テーブルを出力します。

$ mdt < hoge.csv
| headerA | headerB                |
| ------- | ---------------------- |
| short   | very very long content |

連携

コマンドラインツールなので、pbpasteAutomatorと組み合わせて好きなように使えます。

以下は、Automatorのサービスとして登録したmdtをGitHubのIssue作成時に呼び出している様子です。

mdt

便利っぽい。

機能

CSV/TSVに対応

タブ区切りにも対応しているのでエクセル表をコピーして

$ pbpaste | mdt

のようにしてMarkdown形式テーブルに変換できます。

整形

カラムの幅を自動で整えます。日本語文字が入っても大丈夫です。

ヘッダでのalign定義

headerA:, :headerB:
content, content

のようなCSVから

| headerA | headerB |
| -------:|:-------:|
| content | content |

のようなalign定義されたテーブルを出力します。

繰り返し

Markdown形式のテーブルを編集するときもCSV形式で編集できるように、テーブルとCSVの混在した状態でも繰り返しコマンドを適用できます。もちろん毎回整形しなおします。

| headerA | headerB |
| -------:|:-------:|
| content | content |
next content, next content

のように行を追加した状態から以下の出力を得ることができます。

| headerA      | headerB      |
| ------------:|:------------:|
| content      | content      |
| next content | next content |

Examplesもあわせてどうぞ

インストール

$ go get github.com/monochromegane/mdt/...

です。

Automator

冒頭のGitHubのPR/Issueや他のアプリケーションから使うためにmdtをAutomatorに登録する手順です。

設定

Automatorから新規サービスとして登録します。

アクションはライブラリ > Run Shell Scriptを選んでください。

mdt\_with\_automator

このようにサービスとして登録することで

  • 選択したテキストを標準入力としてmdtに渡す
  • 選択したテキストを結果で置き換え

する動作を全てのアプリケーションから呼び出すことができます。

ショートカットキー

このままだとメニューサービスから呼び出す必要があるので、ショートカットキーを定義します。

システム環境設定 > キーボード > ショートカットタブ > サービス を選択し、登録したサービスにショートカットキーを割り当てます。


まとめ

Automatorほとんど使ったことなかったのですが、コマンドラインツールと組み合わせてアプリケーション横断で同じ機能を使うことができるようになるのはいいなあと思いました。 ブラウザ上でPR/Issue書いているときに整形するためエディタに切り替えなくてよいのは便利です。

それから、このツールを作ることでMarkdown形式のテーブル記法をやっと覚えることができました。Go言語最高ですね。

このエントリーをはてなブックマークに追加