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