Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library 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(opts = {}) [added by yaml]

例外を発生する。

[PARAM] opts:
YAMLドキュメント出力の際のオプションを指定するが使われない。
[EXCEPTION] TypeError:
require 'yaml'

begin
  cc = Class.new
  cc.to_yaml
rescue
  p $!
  #=> #<TypeError: can't dump anonymous class Class>
end
Kernel#y(obj) [added by yaml]

オブジェクトをYAMLフォーマットで表示します。

[PARAM] YAML:

フォーマットで表示したいオブジェクト

require 'yaml'

class MyDog
  attr_accessor :name, :age
end

mydog = MyDog.new
mydog.age = 17

p mydog
#=> #<MyDog:0x2b080b8 @age=17>
y mydog
#=> --- !ruby/object:MyDog
#=> age: 17
Object#to_yaml(opts = {}) [added by yaml]

オブジェクトをYAMLドキュメントに変換します。

[PARAM] opts:
YAMLドキュメント出力の際のオプションを指定する。
require 'yaml'

h = {
  :ugo => 17,
  :hoge => "fuga",
}

print h.to_yaml
#=> ---
#=> :ugo: 17
#=> :hoge: fuga

class MyDog
  attr_accessor :name, :age
end

c = MyDog.new
c.name = "Pochi"
c.age = 3
print c.to_yaml
#=> --- !ruby/object:MyDog
#=> age: 3
#=> name: Pochi
Object#to_yaml_properties -> [String] [added by yaml]

Object#instance_variables.sortの結果を返します。

[RETURN]
オブジェクトのインスタンス変数名の配列
require 'yaml'

h = {
  :ugo => 17,
  :hoge => "fuga",
}

p h.to_yaml_properties
#=> []
class MyDog
  attr_accessor :name, :age
end

c = MyDog.new
c.name = "Pochi"
c.age = 3
p c.to_yaml_properties.join(",")
#=> ["@age,@name"]
Object#to_yaml_style -> nil [added by yaml]

nilを返します。

[RETURN]
nilを返します。
require 'yaml'

p to_yaml_style
#=> nil
a = []
p a.to_yaml_style
#=> nil
String#is_binary_data? [added by yaml]
String#is_complex_yaml? [added by yaml]
Struct.yaml_tag_class_name -> String [added by yaml]

Struct::をのぞいたクラス名を返す

[RETURN]
Struct::をのぞいたクラス名
require 'yaml'

YStruct = Struct.new("YStruct", :name)
p YStruct::yaml_tag_class_name
#=> "YStruct"
Struct.yaml_tag_read_class(name) -> String [added by yaml]

引数nameにStruct::を加えた文字列を返す

[RETURN]
引数nameにStruct::を加えた文字列
require 'yaml'

YStruct = Struct.new("YStruct", :name)
p YStruct::yaml_tag_read_class("YStruct")
#=> "Struct::YStruct"

Classes

Sublibraries