Class: Module

Inherits:
Object show all
Defined in:
lib/sup.rb

Instance Method Summary collapse

Instance Method Details

#yaml_properties(*props) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/sup.rb', line 17

def yaml_properties *props
  props = props.map { |p| p.to_s }
  vars = props.map { |p| "@#{p}" }
  klass = self
  path = klass.name.gsub(/::/, "/")
  
  klass.instance_eval do
    define_method(:to_yaml_properties) { vars }
    define_method(:to_yaml_type) { "!#{Redwood::YAML_DOMAIN},#{Redwood::YAML_DATE}/#{path}" }
  end

  YAML.add_domain_type("#{Redwood::YAML_DOMAIN},#{Redwood::YAML_DATE}", path) do |type, val|
    klass.new(*props.map { |p| val[p] })
  end
end