Sha256: 4187b35d8fee356855bbf8c390636a2f900fb22ce3e90f14ef47ad71edb5c6bc
Contents?: true
Size: 1001 Bytes
Versions: 3
Compression:
Stored size: 1001 Bytes
Contents
require 'mash' class Node < Hash class Attribute attr_reader :value def initialize(value) @value = value end def [](key) puts "Node::Attribute key #{key}" nil end end def initialize @data = {} super end def []=(key,value) key = convert_key(key) result = super attribute = Attribute.new(result) @data[key] = attribute end def [](key) key = convert_key(key) if @data[key].nil? result = @data[key] = Node.new elsif @data[key].is_a?(Node::Attribute) result = @data[key].value elsif @data[key].is_a?(Node) result = @data[key] else raise "should never happen" end result end def to_hash hash = {} @data.each do |key,item| if item.is_a?(Node) hash[key] = item.to_hash else hash[key] = item.value end end hash end def to_mash Mash.from_hash(to_hash) end private def convert_key(key) key.to_sym end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rna-0.3.5 | lib/node.rb |
rna-0.3.4 | lib/node.rb |
rna-0.3.3 | lib/node.rb |