PIYO - Tech & Life -

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|

実際に表にしてみるとこんな感じ。

head1head2head3head4
line1-1line1-2line1-3line1-4
line2-1line2-2line2-3line2-4
line3-1line3-2line3-3line3-4

応用

空のセルがあっても大丈夫。勝手に補うようにしている。

require "csvtomd"

csv = <<CSV
, , , head,
, ,
,
CSV

puts CsvToMd.convert(csv)

上のコードではこんな出力になる。

||||head||
|---|---|---|---|---|
||||||
||||||

スカスカの表になる。

head

※はてなブログではMarkdownの解釈が若干異なるようで5列目が潰れてしまっているが、KobitoやGitHubでは空の5列目はそのまま残って表示される。

table

Automatorと連携

このあたりに同じようなことが書いてあるので参考にしてもらえると良いっす。

マークダウンに見出し番号をつけるRuby Gem書いた - ぴよログ テキスト欄に書いたRubyのコードをAutomatorで評価する - ぴよログ

  1. CSVを書く
  • 選択する
  • 設定したショートカットキー
  • Markdown形式に置き換えられる

Markdown生活がまた便利になった。