Sha256: 08e4650e0ee7ef0f592e33bb4992449cc1566907890c95b5b1082f757da115df

Contents?: true

Size: 1.33 KB

Versions: 22

Compression:

Stored size: 1.33 KB

Contents

# This takes the preferable methods and adds some
# syntactic sugar to access the preferences
#
# class App < Configuration
#   preference :color, :string
# end
#
# a = App.new
#
# setters:
# a.color = :blue
# a[:color] = :blue
# a.set :color = :blue
# a.preferred_color = :blue
#
# getters:
# a.color
# a[:color]
# a.get :color
# a.preferred_color
#
#

require 'spree/core/preferences/preferable'

module Spree::Preferences
  class Configuration
    include Spree::Preferences::Preferable

    def configure
      yield(self) if block_given?
    end

    def preferences
      ::Spree::Preferences::ScopedStore.new(self.class.name.underscore)
    end

    def reset
      preferences.each do |name, _value|
        set_preference name, preference_default(name)
      end
    end

    alias [] get_preference
    alias []= set_preference

    alias get get_preference

    def set(*args)
      options = args.extract_options!
      options.each do |name, value|
        set_preference name, value
      end

      set_preference args[0], args[1] if args.size == 2
    end

    def method_missing(method, *args)
      name = method.to_s.delete('=')
      if has_preference? name
        if method.to_s =~ /=$/
          set_preference(name, args.first)
        else
          get_preference name
        end
      else
        super
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
spree_core-4.10.1 lib/spree/core/preferences/configuration.rb
spree_core-4.10.0 lib/spree/core/preferences/configuration.rb
spree_core-4.9.0 lib/spree/core/preferences/configuration.rb
spree_core-4.8.3 lib/spree/core/preferences/configuration.rb
spree_core-4.8.2 lib/spree/core/preferences/configuration.rb
spree_core-4.7.3 lib/spree/core/preferences/configuration.rb
spree_core-4.6.6 lib/spree/core/preferences/configuration.rb
spree_core-4.5.5 lib/spree/core/preferences/configuration.rb
spree_core-4.5.4 lib/spree/core/preferences/configuration.rb
spree_core-4.6.5 lib/spree/core/preferences/configuration.rb
spree_core-4.7.2 lib/spree/core/preferences/configuration.rb
spree_core-4.7.1 lib/spree/core/preferences/configuration.rb
spree_core-4.6.4 lib/spree/core/preferences/configuration.rb
spree_core-4.7.0 lib/spree/core/preferences/configuration.rb
spree_core-4.6.3 lib/spree/core/preferences/configuration.rb
spree_core-4.6.2 lib/spree/core/preferences/configuration.rb
spree_core-4.6.1 lib/spree/core/preferences/configuration.rb
spree_core-4.6.0 lib/spree/core/preferences/configuration.rb
spree_core-4.5.3 lib/spree/core/preferences/configuration.rb
spree_core-4.5.2 lib/spree/core/preferences/configuration.rb