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