module BuilderSupport::InstanceMethods

Public Instance Methods

json_addition() click to toggle source
# File lib/builder_support.rb, line 43
def json_addition
  proc { }
end
to_builder(rmv: [ ], add: [ ], merge: { }, flt_add: [ ], flt_rmv: [ ]) click to toggle source
# 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