class C::Node
Private Class Methods
from_h(h)
click to toggle source
Deserialize a node from a given Hash representation.
# File lib/cast-to-yaml/to_h.rb, line 42 def self.from_h(h) params = {} fields.each do |f| name = f.init_key value = h[name.to_s] if value params[name] = if f.child? default = f.make_default if default.kind_of?(C::NodeList) || value.kind_of?(::Array) raise ArgumentError, "node is not a list" unless value.kind_of? ::Array default = C::NodeArray.new unless default default.push(*(value.collect { |c| C.from_h(c) })) else C.from_h(value) end else value end end end return self.new(params) end
kind()
click to toggle source
# File lib/cast-to-yaml/to_h.rb, line 33 def self.kind @kind ||= name.split('::').last. gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2'). gsub(/([a-z])([A-Z])/, '\1_\2').downcase end
Public Instance Methods
to_h()
click to toggle source
Serialize a node to a Hash representation.
# File lib/cast-to-yaml/to_h.rb, line 8 def to_h res = {} kind = self.class.kind res["kind"] = kind fields.each do |f| name = f.init_key.to_s value = self.send(f.reader) if value && !(value == f.make_default) res[name] = if f.child? if value.kind_of? C::NodeList value.collect { |n| n.to_h } else value.to_h end else value end end end return res end
to_h_split()
click to toggle source
# File lib/cast-to-yaml/to_yaml.rb, line 5 def to_h_split res = {} kind = self.class.kind res["kind"] = kind fields.each do |f| name = f.init_key.to_s value = self.send(f.reader) if value && !(value == f.make_default) res[name] = if f.child? if value.kind_of? C::NodeList value.collect { |n| n.to_h_split } else value.to_h_split end else value end end end return res end