CSVOとYAML

前回の記事(CSVOの表現力 - はじめてのフォーマット)の最後のほうで 行/列を入れ替えたCSVOデータを貼りましたが、YAMLに似ていると感じませんでしたか?

再掲 f:id:xunxiu:20200515152252p:plain

CSVOはもともと、VBAで業務ツールを作っていたときに、 設定情報をYAMLのような形式でワークシート上で管理できないか、 と考えたところから始まりました。

CSVを拡張するというアイデアはそのあとに生まれたのです。

では、下のYAMLデータをCSVO形式に変換してみましょう。 (データはYAML Ain’t Markup Language (YAML™) Version 1.2のExample 2.27.を改変したもの)

invoice: 34843
date   : 2001-01-23
bill-to:
    given  : Chris
    family : Dumars
    address:
        lines:
            - 458 Walkman Dr.
            - Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
    - Late afternoon is best.
    - Backup contact is Nancy
    - Billsmer @ 338-4338.

スペースをタブにして貼り付けます。

f:id:xunxiu:20200518124050p:plain

値を一列にまとめます。

f:id:xunxiu:20200518124602p:plain

ネスト時の改行を無くして リストのマークを*に変えて完成です。

f:id:xunxiu:20200518130236p:plain

行/列を入れ替えたものと 出力したテキストデータも貼っておきましょう。

f:id:xunxiu:20200518130720p:plain

invoice:,date:,bill-to:,,,,,,,product:,,,,,,,,tax:,total:,comments:,,
,,given:,family:,address:,,,,,*,,,,*,,,,,,*,*,*
,,,,lines:,,city:,state:,postal:,sku:,quantity:,description:,price:,sku:,quantity:,description:,price:,,,,,
,,,,*,*,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,
34843,2001-01-23,Chris,Dumars,458 Walkman Dr.,Suite #292,Royal Oak,MI,48046,BL394D,4,Basketball,450,BL4438H,1,Super Hoop,2392,251.42,4443.52,Late afternoon is best.,Backup contact is Nancy,Billsmer @ 338-4338.