Sha256: b32a6cf2ae9e8294888bf7b052a7df1d6aa5bb7c56f475176684cd056645ab61
Contents?: true
Size: 1.42 KB
Versions: 3
Compression:
Stored size: 1.42 KB
Contents
require 'forwardable' module SonJay class ObjectModel class ContentData extend Forwardable include Enumerable def initialize(data = {}) @data = data.to_hash end def []=(name, value) name = "#{name}" unless String === name @data[name] = value end def fetch(name, *args) name = "#{name}" unless String === name block_given? ? @data.fetch(name, *args) { |*args| yield *args } : @data.fetch(name, *args) end def [](name) name = "#{name}" unless String === name @data[name] end def hash_merge(other) @data.dup.tap { |result| other.each do |name, value| name = "#{name}" unless String === name result[name] = value end } end def hash_merge(other) @data.dup.tap { |result| other.each do |name, value| result[name] = value end } end def freeze @data.freeze super end def to_h @data.dup end def dup self.class.new( @data.dup ) end def clone new_copy = super unless new_copy.frozen? new_copy.instance_variable_set :@data, @data.clone end new_copy end def_delegators :@data, :each, :length, :keys, :has_key?, :empty?, :to_json end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
son_jay-0.5.2 | lib/son_jay/object_model/content_data.rb |
son_jay-0.5.1 | lib/son_jay/object_model/content_data.rb |
son_jay-0.5.0 | lib/son_jay/object_model/content_data.rb |