66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/jsonize.rb', line 66
def prepare_json options = {}
attr_hash = [
instance_attrs,
JSON_ATTRS,
embed_attrs,
additional_attrs,
external_attrs(options),
options[:map] || {}
].reduce { |r, hash| r.merge(hash.map {|k,v| [k.to_sym, v] }.to_h) }
except = options.fetch(:except, [])
only = options.fetch(:only, self.attributes.keys.map(&:to_sym) | (options[:map] || {}).keys | embed_attrs.keys | external_attrs(options).keys)
attr_hash.map do |(name_in, rule_in)|
name = /^_(?<_name>.*)/ =~ name_in && _name || name_in.to_s
next nil if except.include?(name.to_sym) || (only & [ name.to_sym, name_in.to_sym ].uniq).blank?
rule = parse_rule(rule_in)
[name, { "rule" => rule, "real_name" => name_in.to_s }]
end.compact.to_h
end
|