Sha256: 030c55de0e09240403c39c6705d811d479ce2cf0d0afe6a5b7fc59c347fb8117
Contents?: true
Size: 1.24 KB
Versions: 3
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true # Collection to store arguments and outputs values module Light module Services module Collection class Base # Includes extend Forwardable # Settings def_delegators :@storage, :key?, :to_h def initialize(instance, storage = {}) @instance = instance @storage = storage return if storage.is_a?(Hash) raise Light::Services::ArgTypeError, "#{instance.class} - arguments must be a Hash" end def set(key, value) @storage[key] = value end def get(key) @storage[key] end def [](key) get(key) end def []=(key, value) set(key, value) end def load_defaults settings_collection.each do |name, settings| next if !settings.default_exists || key?(name) if settings.default.is_a?(Proc) set(name, @instance.instance_exec(&settings.default)) else set(name, deep_dup(settings.default)) end end end private def deep_dup(object) Marshal.load(Marshal.dump(object)) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
light-services-2.1 | lib/light/services/collection/base.rb |
light-services-2.0 | lib/light/services/collection/base.rb |
light-services-2.0.0.rc9 | lib/light/services/collection/base.rb |