Sha256: 6a3c11d788ee512e2555592eaa133914bea3eadc6e4ed51153f437590fcf515d
Contents?: true
Size: 861 Bytes
Versions: 8
Compression:
Stored size: 861 Bytes
Contents
require 'mash' class Node < Hash class Attribute attr_reader :value def initialize(value) @value = value 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) case @data[key] when nil @data[key] = Node.new when Node::Attribute @data[key].value when Node @data[key] else raise "should never happen" end 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
8 entries across 8 versions & 1 rubygems
Version | Path |
---|---|
rna-0.4.7 | lib/node.rb |
rna-0.4.6 | lib/node.rb |
rna-0.4.2 | lib/node.rb |
rna-0.4.1 | lib/node.rb |
rna-0.4.0 | lib/node.rb |
rna-0.3.8 | lib/node.rb |
rna-0.3.7 | lib/node.rb |
rna-0.3.6 | lib/node.rb |