Sha256: d1e9c778bdfd80d2871fc6975fd13386b2b352c18cc973f796a39456742f3481

Contents?: true

Size: 1.13 KB

Versions: 26

Compression:

Stored size: 1.13 KB

Contents

module Spree
  module Preferences
    class StaticModelPreferences
      class Definition
        attr_reader :preferences

        def initialize(klass, hash)
          hash = hash.symbolize_keys
          hash.keys.each do |key|
            if !klass.defined_preferences.include?(key)
              raise "Preference #{key.inspect} is not defined on #{klass}"
            end
          end
          @preferences = hash
        end

        def fetch(key, &block)
          @preferences.fetch(key, &block)
        end

        def []=(key, value)
          # ignores assignment
        end

        def to_hash
          @preferences.deep_dup
        end
      end

      def initialize
        @store = Hash.new do |h,klass|
          h[klass] = {}
        end
      end

      def add(klass, name, preferences)
        # We use class name instead of class to allow reloading in dev
        raise "Static model preference '#{name}' on #{klass} is already defined" if @store[klass.to_s][name]
        @store[klass.to_s][name] = Definition.new(klass, preferences)
      end

      def for_class(klass)
        @store[klass.to_s]
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
solidus_core-1.2.3 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.4 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.0.7 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.0.6 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.2.2 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.2.1 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.3 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.0.5 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.2.0 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.2.0.rc2 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.0.4 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.2 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.2.0.rc1 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.2.0.beta1 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.0.3 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.1 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.0 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.0.pre2 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.0.pre1 app/models/spree/preferences/static_model_preferences.rb
solidus_core-1.1.0.beta1 app/models/spree/preferences/static_model_preferences.rb