Class: Volt::ReactiveHash
  
  
  
  
  
    - Inherits:
 
    - 
      Object
      
        
        show all
      
    
 
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - lib/volt/reactive/reactive_hash.rb
 
  
  
 
  Direct Known Subclasses
  Errors
 
  
    
      Instance Method Summary
      collapse
    
    
  
  Constructor Details
  
    
  
  
    #initialize(values = {})  ⇒ ReactiveHash 
  
  
  
  
    
Returns a new instance of ReactiveHash.
   
 
  
  
    
      
5
6
7
8
9 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 5
def initialize(values = {})
  @hash     = values
  @deps     = HashDependency.new
  @all_deps = Dependency.new
end
     | 
  
 
  
 
  Dynamic Method Handling
  
    This class handles dynamic methods through the method_missing method
    
  
  
    
  
  
    #method_missing(method_name, *args, &block)  ⇒ Object 
  
  
  
  
    
TODO: We should finish off this class for reactivity
   
 
  
  
    
      
21
22
23
24 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 21
def method_missing(method_name, *args, &block)
  @all_deps.depend
  @hash.send(method_name, *args, &block)
end 
     | 
  
 
  
 
  
    Instance Method Details
    
      
  
  
    
      
11
12
13
14 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 11
def ==(val)
  @all_deps.depend
  @hash == val
end 
     | 
  
 
    
      
  
  
    
      
26
27
28
29
30 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 26
def [](key)
  @deps.depend(key)
  @hash[key]
end 
     | 
  
 
    
      
  
  
    #[]=(key, value)  ⇒ Object 
  
  
  
  
    
      
32
33
34
35
36
37 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 32
def []=(key, value)
  @deps.changed!(key)
  @all_deps.changed!
  @hash[key] = value
end 
     | 
  
 
    
      
  
  
    
      
16
17
18 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 16
def blank?
  @hash.blank?
end 
     | 
  
 
    
      
  
  
    
      
45
46
47
48
49
50
51
52
53 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 45
def clear
      @hash.keys.each do |key|
    delete(key)
  end
  @all_deps.changed!
end
     | 
  
 
    
      
  
  
    #delete(key)  ⇒ Object 
  
  
  
  
    
      
39
40
41
42
43 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 39
def delete(key)
  @deps.delete(key)
  @all_deps.changed!
  @hash.delete(key)
end 
     | 
  
 
    
      
  
  
    
      
72
73
74
75 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 72
def inspect
  @all_deps.depend
  "#<#{self.class.name} #{@hash.inspect}>"
end
     | 
  
 
    
      
  
  
    #replace(hash)  ⇒ Object 
  
  
  
  
    
      
55
56
57
58
59
60
61 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 55
def replace(hash)
  clear
  hash.each_pair do |key, value|
    self[key] = value
  end
end
     | 
  
 
    
      
  
  
    
      
63
64
65
66 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 63
def to_h
  @all_deps.depend
  @hash
end 
     | 
  
 
    
      
  
  
    
      
68
69
70 
     | 
    
      # File 'lib/volt/reactive/reactive_hash.rb', line 68
def to_json
  @hash.to_json
end 
     |