Sha256: 84b74c6f855a0c7278865f3dcb8a08518cfb92077576c1b1886dc748c7eb0fb5
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
module Nylas module Model # Stores the actual model data to allow for type casting and clean/dirty checking class Attributes attr_accessor :data, :attribute_definitions def initialize(attribute_definitions) @attribute_definitions = attribute_definitions @data = Registry.new(default_attributes) end def [](key) data[key] end def []=(key, value) data[key] = cast(key, value) end private def cast(key, value) attribute_definitions[key].cast(value) end # Merges data into the registry while casting input types correctly def merge(new_data) new_data.each do |attribute_name, value| self[attribute_name] = value end end def to_h(keys: attribute_definitions.keys) keys.each_with_object({}) do |key, casted_data| value = attribute_definitions[key].serialize(self[key]) casted_data[key] = value unless value.nil? || value.empty? end end def serialize(keys: attribute_definitions.keys) JSON.dump(to_h(keys: keys)) end private def default_attributes attribute_definitions.keys.zip([]).to_h end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nylas-4.0.0.rc2 | lib/nylas/model/attributes.rb |