Sha256: 3b2dfc301c76b7d8c988ebb0d41bb047c3b8a21067397f75eab03889dc662bc4

Contents?: true

Size: 1.29 KB

Versions: 90

Compression:

Stored size: 1.29 KB

Contents

# This takes the preferrable methods and adds some
# syntatic 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
#
#
module Spree::Preferences
  class Configuration
    include Spree::Preferences::Preferable

    def configure
      yield(self) if block_given?
    end

    def 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

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

    def method_missing(method, *args)
      name = method.to_s.gsub('=', '')
      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

90 entries across 90 versions & 2 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0.1 app/models/spree/preferences/configuration.rb
goca-spree-core-3.1.14.rails.5.0 app/models/spree/preferences/configuration.rb
goca-spree-core-3.1.15.rails.5.0 app/models/spree/preferences/configuration.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 app/models/spree/preferences/configuration.rb
spree_core-3.2.9 app/models/spree/preferences/configuration.rb
spree_core-3.1.14 app/models/spree/preferences/configuration.rb
spree_core-3.3.6 app/models/spree/preferences/configuration.rb
spree_core-3.2.8 app/models/spree/preferences/configuration.rb
spree_core-3.1.13 app/models/spree/preferences/configuration.rb
spree_core-3.3.5 app/models/spree/preferences/configuration.rb
spree_core-3.3.4 app/models/spree/preferences/configuration.rb
spree_core-3.2.7 app/models/spree/preferences/configuration.rb
spree_core-3.1.12 app/models/spree/preferences/configuration.rb
spree_core-3.3.3 app/models/spree/preferences/configuration.rb
spree_core-3.2.6 app/models/spree/preferences/configuration.rb
spree_core-3.1.11 app/models/spree/preferences/configuration.rb
spree_core-3.1.10 app/models/spree/preferences/configuration.rb
spree_core-3.3.2 app/models/spree/preferences/configuration.rb
spree_core-3.2.5 app/models/spree/preferences/configuration.rb
spree_core-3.1.9 app/models/spree/preferences/configuration.rb