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

singleton method YAML.add_ruby_type

add_ruby_type(type_tag) {|type, val| ...} -> nil[permalink][rdoc]

rubyタイプのクラスをYAMLに追加し、 そのクラスを見つけたときの操作を指定します。

[PARAM] type_tag:
rubyタイプのクラスを文字列で指定します。
[PARAM] type:
YAMLドメインとクラスの文字列
[PARAM] val:
YAMLデータ構造
require 'yaml'

class Dog
  attr_accessor :name
  def initialize(name)
    @name = name
  end
end

str1=<<EOT
--- !ruby/Dog
name: pochi
--- !!Dog
age: 0.5
--- !Qjitsu.com,2007-05-06/Dog
preference: apple
EOT


YAML.add_ruby_type("Dog") do |type, val|
  YAML.object_maker(Dog, val)
end

YAML.each_document(str1){|dog|
  p dog.class
  p dog.respond_to?(:name)
}
#=> Dog
#=> true
#=> YAML::PrivateType
#=> false
#=> YAML::DomainType
#=> false