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
|