Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > yamlライブラリ

library yaml

要約

構造化されたデータを表現するフォーマットであるYAML (YAML Ain't Markup Language) を扱うためのライブラリです。

例1: 構造化された配列

require 'yaml'

data = [ "Taro san", "Jiro san", "Saburo san"]
str_r = YAML.dump(data)

str_l =<<EOT
---
- Taro san
- Jiro san
- Saburo san
EOT

p str_r == str_l #=> true

例2:構造化されたハッシュ

require 'yaml'
require 'date'

str_l =<<YAML_EOT
Tanaka Taro: { age: 35, birthday: 1970-01-01}
Suzuki Suneo: {
  age: 13,
  birthday: 1992-12-21
}
YAML_EOT

str_r = {}
str_r["Tanaka Taro"] = {
  "age" => 35,
  "birthday" => Date.new(1970, 1, 1)
}
str_r["Suzuki Suneo"] = {
  "age" => 13,
  "birthday" => Date.new(1992, 12, 21)
}

p str_r == YAML.load(str_l) #=> true

例3:構造化されたログ

require 'yaml'
require 'stringio'

strio_r = StringIO.new(<<EOT
---
time: 2008-02-25 17:03:12 +09:00
target: YAML
version: 4
log: |
  例を加えた。
  アブストラクトを修正した。
---
time: 2008-02-24 17:00:35 +09:00
target: YAML
version: 3
log: |
  アブストラクトを書いた。

EOT
)

YAML.load_stream(strio_r).documents.sort{|a, b| a["version"] <=> b["version"]}.each{|obj|
  printf "version %d\ntime %s\ntarget:%s\n%s\n", obj["version"], obj["time"], obj["target"], obj["log"]
}

クラスとモジュール

module YAML

YAML (YAML Ain't Markup Language) を扱うモジュールです。

module YAML::BaseNode
class YAML::Stream

YAMLドキュメントを複数保持することができるストリームクラスです。

class YAML::YPath

YAML ドキュメントから特定のデータを検索する機能を提供するYPathのクラスです。

class YAML::YamlNode

例外クラス

class YAML::Error

意図しない入力がメソッドに与えられた時などに発生します。

class YAML::ParseError

将来のために予約されています。現在は発生しません。

class YAML::TypeError

意図しない入力がメソッドに与えられた時などに発生します。

サブライブラリ

yaml/store

RubyのオブジェクトをYAML形式の外部ファイルに格納するためのクラスです。

追加・再定義されるメソッド

Class#to_yaml Kernel#y Object#to_yaml Object#to_yaml_properties Object#to_yaml_style String#is_binary_data? String#is_complex_yaml? Struct.yaml_tag_class_name Struct.yaml_tag_read_class