Class: Datory::Attributes::Serialization::Model
- Inherits:
-
Object
- Object
- Datory::Attributes::Serialization::Model
- Defined in:
- lib/datory/attributes/serialization/model.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#build(attributes = {}) ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#parse(data) ⇒ Object
rubocop:disable Metrics/MethodLength.
- #prepare(data) ⇒ Object
- #to_hash(data) ⇒ Object
Class Method Details
.prepare ⇒ Object
7 8 9 |
# File 'lib/datory/attributes/serialization/model.rb', line 7 def self.prepare(...) new.prepare(...) end |
.to_hash ⇒ Object
11 12 13 |
# File 'lib/datory/attributes/serialization/model.rb', line 11 def self.to_hash(...) new.to_hash(...) end |
Instance Method Details
#build(attributes = {}) ⇒ Object
rubocop:disable Metrics/MethodLength
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/datory/attributes/serialization/model.rb', line 31 def build(attributes = {}) # rubocop:disable Metrics/MethodLength attributes.each do |key, value| self.class.send(:attr_accessor, key) instance_variable_set(:"@#{key}", value) if value.is_a?(Array) value.map! { |item| Datory::Attributes::Serialization::Model.prepare(item) } instance_variable_set(:"@#{key}", value) elsif value.is_a?(Hash) instance_variable_set(:"@#{key}", Datory::Attributes::Serialization::Model.prepare(value)) else instance_variable_set(:"@#{key}", value) end end self end |
#parse(data) ⇒ Object
rubocop:disable Metrics/MethodLength
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/datory/attributes/serialization/model.rb', line 50 def parse(data) # rubocop:disable Metrics/MethodLength data.instance_variables.to_h do |key| value = data.instance_variable_get(key) value = if value.is_a?(Set) || value.is_a?(Array) value.map { |item| Datory::Attributes::Serialization::Model.to_hash(item) } elsif value.is_a?(Datory::Attributes::Serialization::Model) || value.is_a?(Datory::Base) Datory::Attributes::Serialization::Model.to_hash(value) else value end [key.to_s.delete_prefix("@").to_sym, value] end end |
#prepare(data) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/datory/attributes/serialization/model.rb', line 15 def prepare(data) if data.is_a?(Hash) build(data.deep_dup) else data end end |
#to_hash(data) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/datory/attributes/serialization/model.rb', line 23 def to_hash(data) if data.is_a?(Datory::Attributes::Serialization::Model) || data.is_a?(Datory::Base) parse(data) else data end end |