Class: Fiona7::JSON::ReverseObjDecorator

Inherits:
ObjDecorator show all
Defined in:
lib/fiona7/json/reverse_obj_decorator.rb

Instance Method Summary collapse

Methods inherited from ObjDecorator

#initialize

Constructor Details

This class inherits a constructor from Fiona7::JSON::ObjDecorator

Instance Method Details

#as_json(*args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fiona7/json/reverse_obj_decorator.rb', line 6

def as_json(*args)
  with_types = super()
  reverse_types = {}

  with_types.each do |attr, (value, type)|
    if type.nil?
      reverse_types[attr] = value
    else
      reverse_types[attr] = [type, value]
    end
  end

  if reverse_types[:_widget_pool] && !reverse_types[:_widget_pool].empty?
    widgets_reverse_types = reverse_types[:_widget_pool].map do |id, values|
      reversed_values = {}
      values.each do |attr, (value, type)|
        if type.nil?
          reversed_values[attr] = value
        else
          reversed_values[attr] = [type, value]
        end
      end
      [id, reversed_values]
    end

    reverse_types[:_widget_pool] = Hash[widgets_reverse_types]
  end

  reverse_types.as_json(*args)
end