Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > syckライブラリ > Syckモジュール > add_builtin_type
add_builtin_type(type_tag) {|type, val| ...} -> nil[permalink][rdoc]yaml.org,2002ドメインに属しているクラスをYAMLに追加し そのクラスを見つけたときの操作を指定します。
require 'yaml'
str1=<<EOT
--- !ruby.yaml.org,2002/Rational 5/6
EOT
str2=<<EOT
--- !yaml.org,2002/Rational 3/4
EOT
p YAML.load(str1)
#=> #<YAML::DomainType:0x2b07528 @type_id="Rational", @domain="ruby.yaml.org,2002", @value="5/6">
p YAML.load(str2)
#=> #<YAML::DomainType:0x2b0767c @type_id="Rational", @domain="yaml.org,2002", @value="3/4">
YAML.add_builtin_type("Rational"){|type, val|
md = val.split(/\//)
Rational.new!(md[0].to_i, md[1].to_i)
}
p YAML.load(str1)
#=> #<YAML::DomainType:0x2b06fec @type_id="Rational", @domain="ruby.yaml.org,2002", @value="5/6">
## 前回と変化なし
rt = YAML.load(str2)
p rt # => Rational(3, 4)
p rt + 0.25 # => 1.0