Module: BuilderSupport::InstanceMethods

Defined in:
lib/builder_support.rb

Instance Method Summary collapse

Instance Method Details

#json_additionObject



43
44
45
# File 'lib/builder_support.rb', line 43

def json_addition
  proc { }
end

#to_builder(rmv: [ ], add: [ ], merge: { }, flt_add: [ ], flt_rmv: [ ]) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/builder_support.rb', line 26

def to_builder(rmv: [ ], add: [ ], merge: { }, flt_add: [ ], flt_rmv: [ ])
  res = Jbuilder.new do |json|
    dynamic_attrs = self.class.instance_variable_get(:@builder_add_dynamically)
    dynamic_attrs&.each { |attr, proc| add << attr if instance_exec(&proc) }
    json.(self, *self.show_attrs(rmv: rmv, add: add))

    self.flatten_attrs(rmv: flt_rmv, add: flt_add).each do |flatten_attr|
      json.merge! flatten_attr => self.send(flatten_attr)
    end
    instance_exec(json, &json_addition)
    json.merge! merge
  end.attributes!

  mapping = self.class.instance_variable_get(:@builder_map) || { }
  res.transform_keys! { |key| (mapping[key.to_sym] || key).to_s }
end