Sha256: aaa44a0684be45ee4458a1d86d4d1caf01a84cff717563d985194aabe10aa184
Contents?: true
Size: 1.38 KB
Versions: 2
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true module Dolly module PropertyManager def build_property(attributes) assign_identity_properties(attributes) assign_rev_properties(attributes) lambda do |property| name = property.key next unless doc[name].nil? write_attribute(name, attributes[name]) end end def update_attribute lambda do |(key, value)| raise InvalidProperty, "Invalid property: #{key}" unless valid_property?(key) write_attribute(key, value) end end def write_attribute(key, value) casted_value = set_property_value(key, value) instance_variable_set(:"@#{key}", casted_value) update_doc(key) end def valid_property?(name) properties.include?(name.to_sym) end def update_doc(key, _value = nil) doc.regular_writer(key.to_s, instance_variable_get(:"@#{key}")) end def properties self.class.properties end def set_property_value(key, value) properties[key].cast_value(value) end def assign_identity_properties(opts = {}) id_presence = opts[:id] || opts[:_id] || opts['id'] || opts['_id'] self.id = id_presence if id_presence end def assign_rev_properties(opts = {}) rev_presence = opts[:rev] || opts [:_rev] || opts['rev'] || opts['_rev'] self.rev = rev_presence if rev_presence end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dolly-3.1.4 | lib/dolly/property_manager.rb |
dolly-3.1.3 | lib/dolly/property_manager.rb |