CSVテキストをMarkdown形式のテーブルに変換するgem作った
移転しました →
markdown_section_numberingに続いて単発のテキスト変換gemを作ってRubygemsで公開した。
今回作ったのはコンマ区切りで書いたテキストをマークダウン形式のテーブルに変換するメソッドを提供するモジュールで、基本的には自分がAutomator経由で呼び出すことを想定している。
ブログや資料をMarkdown形式で書くことが多いんだけど、これまではMarkdown Tables generatorを使っていた。このサイトはこのサイトでかなり素晴らしいが、どうせならエディタ内で簡単に済ませたい。Markdownのテーブルは人間が手作業で書けるものではないので人間でも書きやすいCSV形式を取ることにした。
リンク
使いかた
READMEからそのまんま持ってきた。
基本
require "csvtomd" csv = <<CSV head1, head2, head3, head4 line1-1, line1-2, line1-3, line1-4 line2-1, line2-2, line2-3, line2-4 line3-1, line3-2, line3-3, line3-4 CSV puts CsvToMd.convert(csv)
上のコードで次の出力が得られる。
|head1|head2|head3|head4| |---|---|---|---| |line1-1|line1-2|line1-3|line1-4| |line2-1|line2-2|line2-3|line2-4| |line3-1|line3-2|line3-3|line3-4|
実際に表にしてみるとこんな感じ。
head1 | head2 | head3 | head4 |
---|---|---|---|
line1-1 | line1-2 | line1-3 | line1-4 |
line2-1 | line2-2 | line2-3 | line2-4 |
line3-1 | line3-2 | line3-3 | line3-4 |
応用
空のセルがあっても大丈夫。勝手に補うようにしている。
require "csvtomd" csv = <<CSV , , , head, , , , CSV puts CsvToMd.convert(csv)
上のコードではこんな出力になる。
||||head|| |---|---|---|---|---| |||||| ||||||
スカスカの表になる。
head | |||
---|---|---|---|
| | |||
| |
※はてなブログではMarkdownの解釈が若干異なるようで5列目が潰れてしまっているが、KobitoやGitHubでは空の5列目はそのまま残って表示される。
Automatorと連携
このあたりに同じようなことが書いてあるので参考にしてもらえると良いっす。
マークダウンに見出し番号をつけるRuby Gem書いた - PILOG テキスト欄に書いたRubyのコードをAutomatorで評価する - PILOG
Markdown生活がまた便利になった。