module StoreComplex::Accessor

Public Instance Methods

store_complex(store_name,*attr_names) click to toggle source
# File lib/store_complex.rb, line 17
def store_complex(store_name,*attr_names)
  attr_names.each do |name|
    attr_set = name.to_s+'='
    
    define_method(name) do
      value = (self.send(store_name) || {})[name.to_s]
      ObservableObject::deep_wrap( StoreComplex::store_to_obj(value) ) { |obj| self.send(attr_set, obj) }
    end
    
    define_method(attr_set) do |value|
      store = self.send(store_name) || {}
      store[name.to_s] = StoreComplex::obj_to_store(value)
      self.send(store_name.to_s+'=',store)
    end
  end
end