lib/bumblebee/column.rb in bumblebee-3.0.1 vs lib/bumblebee/column.rb in bumblebee-3.1.0.pre.alpha

- old
+ new

@@ -27,42 +27,36 @@ raise ArgumentError, 'header is required' if header.to_s.empty? @header = header.to_s @property = property || @header @through = Array(through) - @to_csv = ::Bumblebee::Mutator.new(to_csv) - @to_object = ::Bumblebee::Mutator.new(to_object) + @to_csv = Mutator.new(to_csv) + @to_object = Mutator.new(to_object) + @resolver = Objectable.resolver freeze end # Extract from object and set on hash def csv_set(data_object, hash) - value = extract(traverse(data_object), property) + value = resolver.get(data_object, full_property) to_csv.set(hash, header, value) end def object_set(csv_object, hash) - pointer = build(hash) - value = csv_object[header] + value = csv_object[header] - to_object.set(pointer, property, value) + to_object.set(hash, full_property, value) hash end private - def traverse(object) - ::Bumblebee::ObjectInterface.traverse(object, through) - end + attr_reader :resolver - def extract(object, key) - ::Bumblebee::ObjectInterface.get(object, key) - end - - def build(object) - ::Bumblebee::ObjectInterface.build(object, through) + def full_property + through + [property] end end end