Sha256: 1c954fb938c34312ff5f7e9cbb61bd9e4e8f795609900514915247692d85c4e0
Contents?: true
Size: 841 Bytes
Versions: 2
Compression:
Stored size: 841 Bytes
Contents
require 'dolly/property_set' require 'dolly/property' module Dolly module Properties SPECIAL_KEYS = %i[_id _rev] def property *opts, class_name: nil, default: nil opts.each do |opt| properties << (prop = Property.new(opt, class_name, default)) send(:attr_reader, opt) define_method(:"#{opt}=") { |value| write_attribute(opt, value) } define_method(:"#{opt}?") { send(opt) } if prop.boolean? define_method(:"[]") {|name| send(name) } end end def properties @properties ||= PropertySet.new end def all_property_keys properties.map(&:key) + SPECIAL_KEYS end def property_keys all_property_keys - SPECIAL_KEYS end def property_clean_doc(doc) doc.reject { |key, _value| !property_keys.include?(key) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dolly-3.1.0 | lib/dolly/properties.rb |
dolly-3.0.1 | lib/dolly/properties.rb |