やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

AsciiDocでCSV形式テーブルを書いてみた

カンマ区切りの文字列でHTMLテーブルを表現できる。

成果物

GitHubAsciiDoctor.Table.CSV.DSV.PSV.201705091939

開発環境

前回まで

http://ytyaru.hatenablog.com/entry/2018/02/02/000000

冗長さと多機能さのはざまで揺れる乙女心。

CSVでテーブルを書ける

[format="csv", options="header"]
|====
名前,価格
私,2
お前,9
彼,7
彼女,30
虫,8000
|====

f:id:ytyaru:20170509175443p:plain

format="csv"とすることでカンマ区切りの文字列でテーブルが書ける。素敵。コピペマンには嬉しい。

簡易記法

[options="header, autowidth"]
,====
名前,価格
彼,7
彼女,30
,====

format="csv",====で代用した。まさか|====にそんな役目があったとは。冗長とか言ってすみませんでした。

f:id:ytyaru:20170509182446p:plain

デリミタ

以下のデリミタが使える。デフォルトはpsv

名前 デリミタ
psv |
csv ,
dsv :

デリミタ:

[format="dsv", options="header, autowidth"]
|====
名前:価格
私:2
虫:8000
|====

f:id:ytyaru:20170509182143p:plain

別にいいけど、あんまり使わないと思う。

まとめ

デリミタ|

[options="header, autowidth"]
|====
|名前|価格
|彼|7
|彼女|30
|====
[format="psv", options="header, autowidth"]
|====
|名前|価格
|彼|7
|彼女|30
|====
[options="header, autowidth"]
|====
|名前|価格
|彼|7
|彼女|30
|====

なぜかpsvのときだけデータ行の先頭にも|が必要。たぶん>|などで右寄せするなど指定するため?

デリミタ,

[options="header, autowidth"]
,====
名前,価格
彼,7
彼女,30
,====
[format="csv", options="header, autowidth"]
|====
名前|価格
彼|7
彼女|30
|====

デリミタ:

[options="header, autowidth"]
:====
名前,価格
彼,7
彼女,30
:====
[format="dsv", options="header, autowidth"]
|====
名前|価格
彼|7
彼女|30
|====

TSVが使えない…

方法はあるのかも知れないがドキュメントにも書いていないから無いと思う。

format=“tsv”

[format="tsv", options="header, autowidth"]
    ====
名前  価格
私 2
虫 8000
    ====
$ rbenv exec asciidoctor test.asc 
asciidoctor: FAILED: /tmp/test.asc: Failed to load AsciiDoc document - Illegal table format: tsv (RuntimeError)
  Use --trace for backtrace

format="tsv"とするとエラーになる。

|====\t====にする

[options="header, autowidth"]
    ====
名前  価格
私 2
虫 8000
    ====

コードブロック化されてしまった。

f:id:ytyaru:20170509183408p:plain

各種フォーマットに\t

[format="csv", options="header, autowidth"]
|====
名前  価格
私 2
虫 8000
|====
[format="dsv", options="header, autowidth"]
|====
名前  価格
私 2
虫 8000
|====
[format="psv", options="header, autowidth"]
|====
|名前 価格
|私    2
|虫    8000
|====

f:id:ytyaru:20170509194417p:plain

分割できていない。

参考

Asciidoctor User Manual

所感

なんとTSVが使えない。:があってTABがないとは何事か。私をハードタブ教団四代目名誉会長と知っての狼藉か?なにか方法があると信じたい。