lib/disposable/twin/setup.rb in disposable-0.1.6 vs lib/disposable/twin/setup.rb in disposable-0.1.7

- old
+ new

@@ -3,51 +3,49 @@ # Read all properties at twin initialization time from model. # Simply pass through all properties from the model to the respective twin writer method. # This will result in all twin properties/collection items being twinned, and collections # being Collection to expose the desired public API. module Setup - # test is in incoming hash? is nil on incoming model? - def initialize(model, options={}) @fields = {} @model = model @mapper = mapper_for(model) # mapper for model. - setup_properties!(model, options) + setup_properties!(options) end private def mapper_for(model) model end - def setup_properties!(model, options) - schema.each do |dfn| - next if dfn[:readable] == false + def setup_properties!(options) + schema.each { |dfn| setup_property!(dfn, options) } + end - value = setup_value_for(dfn, options) + def setup_property!(dfn, options) + value = + if options.has_key?(name = dfn.name.to_sym) + options[dfn.name.to_sym] + else + setup_value_for(dfn, options) + end - setup_write!(dfn, value) - end + setup_write!(dfn, value) # note: even readable: false will be written to twin as nil. + end - merge_options!(options) # FIXME: call writer!!!!!!!!!! - # from_hash(options) # assigns known properties from options. + def setup_value_for(dfn, options) # overridden by Default. + return if dfn[:readable] == false + read_value_for(dfn, options) end - def setup_value_for(dfn, options) - name = dfn.name - options[name.to_sym] || mapper.send(name) # model.title. + def read_value_for(dfn, options) + mapper.send(dfn.name) # model.title. end def setup_write!(dfn, value) send(dfn.setter, value) end - - def merge_options!(options) - # TODO: ask charliesome if that is faster with return unless options.size. - options.each { |k, v| @fields[k.to_s] = v } # TODO: this merges every option, not only defined ones. - end - # Including this will _not_ use the property's setter in Setup and allow you to override it. module SkipSetter def setup_write!(dfn, value) write_property(dfn.name, value, dfn) \ No newline at end of file