#contens
emails = [ "yuji@dev.com", "shimojo@dev.com" ] p emails
$ ruby parse.rb ["yuji@dev.com", "shimojo@dev.com"]
- yuji@dev.com - shimojo@dev.com - shimojo@gmail.com
require 'yaml' emails = YAML.load_file('mydata.yml') p emails
$ ruby parse.rb ["yuji@dev.com", "shimojo@dev.com", "shimojo@gmail.com"]
- shimojo - 52 - 33.5 - true # true/ffalse, yes/no, on/off - null # ~ - 2016-09-01 - "true" - '555'
$ ruby parse.rb ["shimojo", 52, 33.5, true, nil, #<Date: 2016-09-01 ((2457633j,0s,0n),+0s,2299161j)>, "true", "555"]
# ブロックスタイル - a - b - c
# フロースタイル [a, b, 10]
$ ruby parse.rb ["a", "b", "c"]
# ネスト(入れ子構造) - a - - b-1 - b-2 - c
$ ruby parse.rb ["a", ["b-1", "b-2"], "c"]
# ブロックスタイル name: shimojo score: 90 # : の後の空白は必須 # : の前の空白は何文字あってもOK
# フロースタイル {name: shimojo, score: 90}
$ ruby parse.rb {"name"=>"shimojo", "score"=>90}
# ネスト(入れ子構造) name: shimojo score: game-1: 30 game-2: 40
$ ruby parse.rb {"name"=>"shimojo", "score"=>{"game-1"=>30, "game-2"=>40}}
# ブロックスタイル names: - shimojo - kinjo scores: - 90 - 100
# フロースタイル names: [shimojo, kinjo] scores: [90, 100]
$ ruby parse.rb {"names"=>["shimojo", "kinjo"], "scores"=>[90, 100]}
# ブロックスタイル - name: shimojo score: 90 - name: kinjo score: 100
# フロースタイル - {name: shimojo, score: 90} - {name: kinjo, score: 100}
$ ruby parse.rb [{"name"=>"shimojo", "score"=>90}, {"name"=>"kinjo", "score"=>100}]
# 改行はスペースに変換される this is a pen.
$ ruby parse.rb "this is a pen."
- | # 行末の改行を保持する this is a pen. - |+ # 最終行の改行まで保持する this is a pen. - |- # 行末の改行を保持しない this is a pen.
$ ruby parse.rb ["this\nis\na\npen.\n", "this\nis\na\npen.\n\n", "this\nis\na\npen."]
- > this is a pen. - >+ this is a pen. - >- this is a pen.
$ ruby parse.rb ["this is a pen.\n", "this is a pen.\n\n", "this is a pen."]
- &leader tanaka # アンカー - *leader # エイリアス - &staff sasaki - *staff - *staff - *staff - *staff
$ ruby parse.rb ["tanaka", "tanaka", "sasaki", "sasaki", "sasaki", "sasaki", "sasaki"]
- &shimojo name: shimojo score: 80 - &kinjo name: kinjo score: 90 friends: - *shimojo - &tanaka name: tanaka score: 100 friends: - *shimojo - *kinjo
$ ruby parse.rb [{"name"=>"shimojo", "score"=>80}, {"name"=>"kinjo", "score"=>90, "friends"=>[{"name"=>"shimojo", "score"=>80}]}, {"name"=>"tanaka", "score"=>100, "friends"=>[{"name"=>"shimojo", "score"=>80}, {"name"=>"kinjo", "score"=>90, "friends"=>[{"name"=>"shimojo", "score"=>80}]}]}]
common: &common user: dbuser password: dbpassword development: database: myapp_dev <<: *common # commonよりuser / passwordを参照 production: database: myapp_prod <<: *common test: database: myapp_test <<: *common
$ ruby parse.rb {"common"=>{"user"=>"dbuser", "password"=>"dbpassword"}, "development"=>{"database"=>"myapp_dev", "user"=>"dbuser", "password"=>"dbpassword"}, "production"=>{"database"=>"myapp_prod", "user"=>"dbuser", "password"=>"dbpassword"}, "test"=>{"database"=>"myapp_test", "user"=>"dbuser", "password"=>"dbpassword"}}
# 複数のデータを1つのファイルに記述する --- # データの開始 - a - b - c ... # データの終了。省略可 --- - 1 - 2 - 3 ...
require 'yaml' File.open('mydata.yml') do |io| YAML.load_documents(io) do |d| p d end end
$ ruby parse.rb ["a", "b", "c"] [1, 2, 3]
require 'yaml' users = [ {'name' => 'shimojo', 'score' => 90}, {'name' => 'kinjo', 'score' => 100}, ] puts users.to_yaml # YAML形式に変換して出力
$ ruby parse.rb --- - name: shimojo score: 90 - name: kinjo score: 100