Sha256: 5d866e57015d17b84ec5c587aeb386a132f56386380f9192021f0e1d36d93c39
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
require "data_accessible/version" require "data_accessible/data_loader" require "data_accessible/hash_methods" require "data_accessible/data_accessors" module DataAccessible def self.included(caller) caller.extend ClassMethods end def self.sources klass = Class.new { extend ClassMethods } yield klass if block_given? klass end def self.default_data_path @data_path = 'data' end def self.data_path=(path) @data_path = path end def self.data_path return @data_path if @data_path default_data_path end module ClassMethods def data_load(data_source, namespace = nil) to_h.clear data_merge(data_source, namespace) end def data_merge(data_source, namespace = nil) source_data = DataLoader.load_source(data_source) new_data = namespace ? source_data.fetch(namespace) : source_data @data = HashMethods.deep_merge(to_h, new_data) DataAccessors.accessor_for_obj(self) DataAccessors.accessor_for_data(to_h) to_h end def to_h @data ||= {} end def [](key) to_h[key] end def []=(key, value) DataAccessors.define_accessor(to_h, key) DataAccessors.define_accessor(self, key) to_h[key] = DataAccessors.accessor_for_data(value) end alias accessible_data to_h alias data_accessible to_h end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
data_accessible-1.0.2 | lib/data_accessible.rb |
data_accessible-1.0.1 | lib/data_accessible.rb |