Sha256: c8b246c79b0b3d3a097bba3f6daa38971016230a3e3cce0742da6921dcddc4b4
Contents?: true
Size: 1.28 KB
Versions: 27
Compression:
Stored size: 1.28 KB
Contents
require 'volt/reactive/hash_dependency' module Volt class ReactiveHash def initialize(values = {}) @hash = values @deps = HashDependency.new @all_deps = Dependency.new end def ==(val) @all_deps.depend @hash == val end def blank? @hash.blank? end # TODO: We should finish off this class for reactivity def method_missing(method_name, *args, &block) @all_deps.depend @hash.send(method_name, *args, &block) end def [](key) @deps.depend(key) @hash[key] end def []=(key, value) @deps.changed!(key) @all_deps.changed! @hash[key] = value end def delete(key) @deps.delete(key) @all_deps.changed! @hash.delete(key) end def clear # Don't use .each_key so we get a clone here since we are # deleting as we go. @hash.keys.each do |key| delete(key) end @all_deps.changed! end def replace(hash) clear hash.each_pair do |key, value| self[key] = value end end def to_h @all_deps.depend @hash end def to_json @hash.to_json end def inspect @all_deps.depend "#<#{self.class.name} #{@hash.inspect}>" end end end
Version data entries
27 entries across 27 versions & 1 rubygems