Sha256: 0f54a786f35647abfb20e7922a0c60f2c61352bdfc584f2db311ffb65d97f6ea

Contents?: true

Size: 761 Bytes

Versions: 2

Compression:

Stored size: 761 Bytes

Contents

module DesignerNews
  module Configurable
    attr_accessor :access_token, :user_agent, :middleware
    attr_writer :api_endpoint

    class << self
      def keys
        @keys ||= [
          :access_token,
          :api_endpoint,
          :user_agent,
          :middleware
        ]
      end
    end

    def configure
      yield self
    end

    def reset!
      DesignerNews::Configurable.keys.each do |key|
        instance_variable_set(:"@#{key}", DesignerNews::Default.options[key])
      end
      self
    end

    alias setup reset!

    def api_endpoint
      ::File.join(@api_endpoint, "")
    end

    private

    def options
      Hash[DesignerNews::Configurable.keys.map{|key| [key, instance_variable_get(:"@#{key}")]}]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dn-0.1.0 lib/designer_news/mixins/configurable.rb
dn-0.0.1 lib/designer_news/mixins/configurable.rb