Sha256: 479a7590d27cc76ffc3e55cc33b88b9a484db472be413839ff343c5a839b08e9

Contents?: true

Size: 969 Bytes

Versions: 2

Compression:

Stored size: 969 Bytes

Contents

module Spreeference
  class Configuration
    include Spreeference::Preferable
    
    def configure
      yield(self) if block_given?
    end

    def preferences
      Spreeference::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

2 entries across 2 versions & 1 rubygems

Version Path
spreeference-0.1.1 lib/spreeference/configuration.rb
spreeference-0.1.0 lib/spreeference/configuration.rb