Module: BBLib::Serializer::ClassMethods

Defined in:
lib/bblib/core/mixins/serializer.rb

Instance Method Summary collapse

Instance Method Details

#_ancestor_dont_serialize_fieldsObject



28
29
30
31
32
33
# File 'lib/bblib/core/mixins/serializer.rb', line 28

def _ancestor_dont_serialize_fields
  ancestors.reverse.flat_map do |ancestor|
    next unless ancestor.respond_to?(:_dont_serialize_fields) && ancestor != self
    ancestor._dont_serialize_fields
  end.compact.uniq
end

#_ancestor_serialize_fieldsObject



15
16
17
18
19
20
21
22
# File 'lib/bblib/core/mixins/serializer.rb', line 15

def _ancestor_serialize_fields
  hash = {}
  ancestors.reverse.map do |ancestor|
    next unless ancestor.respond_to?(:_serialize_fields) && ancestor != self
    hash = hash.deep_merge(ancestor._serialize_fields)
  end
  hash
end

#_dont_serialize_fieldsObject



24
25
26
# File 'lib/bblib/core/mixins/serializer.rb', line 24

def _dont_serialize_fields
  @_dont_serialize_fields ||= _ancestor_dont_serialize_fields
end

#_serialize_fieldsObject



11
12
13
# File 'lib/bblib/core/mixins/serializer.rb', line 11

def _serialize_fields
  @_serialize_fields ||= _ancestor_serialize_fields
end

#dont_serialize_method(method) ⇒ Object



35
36
37
# File 'lib/bblib/core/mixins/serializer.rb', line 35

def dont_serialize_method(method)
  _dont_serialize_fields.push(method) unless _dont_serialize_fields.include?(method)
end

#serialize_method(name, method = nil, **opts) ⇒ Object



39
40
41
42
43
44
# File 'lib/bblib/core/mixins/serializer.rb', line 39

def serialize_method(name, method = nil, **opts)
  return false if method == :serialize || name == :serialize && method.nil?
  _serialize_fields[name.to_sym] = {
    method: (method || name).to_sym
  }.merge(opts)
end