lib/serega/object_serializer.rb in serega-0.10.0 vs lib/serega/object_serializer.rb in serega-0.11.0

- old
+ new

@@ -8,20 +8,21 @@ class SeregaObjectSerializer # # SeregaObjectSerializer instance methods # module InstanceMethods - attr_reader :context, :points, :many, :opts + attr_reader :context, :plan, :many, :opts + # @param plan [SeregaPlan] Serialization plan # @param context [Hash] Serialization context # @param many [TrueClass|FalseClass] is object is enumerable - # @param points [Array<MapPoint>] Serialization points (attributes) + # @param opts [Hash] Any custom options # # @return [SeregaObjectSerializer] New SeregaObjectSerializer - def initialize(context:, points:, many: nil, **opts) + def initialize(context:, plan:, many: nil, **opts) @context = context - @points = points + @plan = plan @many = many @opts = opts end # Serializes object(s) @@ -42,11 +43,11 @@ end # Patched in: # - plugin :presenter (makes presenter_object and serializes it) def serialize_object(object) - points.each_with_object({}) do |point, container| + plan.points.each_with_object({}) do |point, container| serialize_point(object, point, container) end end # Patched in: @@ -68,17 +69,17 @@ def attach_final_value(final_value, point, container) container[point.name] = final_value end def final_value(value, point) - point.has_nested_points? ? relation_value(value, point) : value + point.child_plan ? relation_value(value, point) : value end def relation_value(value, point) - nested_points = point.nested_points - nested_serializer = point.nested_object_serializer - nested_many = point.many - serializer = nested_serializer.new(context: context, points: nested_points, many: nested_many, **opts) + child_plan = point.child_plan + child_serializer = point.child_object_serializer + child_many = point.many + serializer = child_serializer.new(context: context, plan: child_plan, many: child_many, **opts) serializer.serialize(value) end def array?(object, many) many.nil? ? object.is_a?(Enumerable) : many