class Racket::Settings::Base

Base class for settings.

Public Class Methods

default_value(symbol) click to toggle source

Returns a default value for a key. Default values are stored in @defaults, which is a Racket::Registry object.

@param [Symbol] symbol @return [Object]

# File lib/racket/settings/base.rb, line 81
def self.default_value(symbol)
  return nil unless defined?(@defaults) && @defaults.respond_to?(symbol)
  @defaults.send(symbol)
end
new(defaults = {}) click to toggle source
# File lib/racket/settings/base.rb, line 24
def initialize(defaults = {})
  @custom = {}
  defaults.each_pair do |key, value|
    meth = "#{key}=".to_sym
    if respond_to?(meth) then send(meth, value)
    else @custom[key] = value
    end
  end
end
setting(symbol) click to toggle source

Creates a setting with a default value.

@param [Symbol] symbol @return [nil]

# File lib/racket/settings/base.rb, line 90
def self.setting(symbol)
  klass = self
  ivar = "@#{symbol}".to_sym
  define_method symbol do
    instance_variable_set(ivar, klass.default_value(symbol)) unless
      instance_variables.include?(ivar)
    instance_variable_get(ivar)
  end
  attr_writer(symbol) && nil
end

Public Instance Methods

delete(key) click to toggle source

Deletes a custom setting associated with the application.

@param [Symbol] key @return [nil]

# File lib/racket/settings/base.rb, line 38
def delete(key)
  raise ArgumentErrpr,
        "Cannot delete standard setting #{key}" if respond_to?(key.to_sym)
  @custom.delete(key) && nil
end
fetch(key, default = nil) click to toggle source

Returns a settings value associated with the application. Both standard and custom settings are searched. If the key cannot be found, a default value is returned.

@param [Symbol] key @param [Object] default @return [Object]

# File lib/racket/settings/base.rb, line 50
def fetch(key, default = nil)
  meth = key.to_sym
  return send(meth) if respond_to?(meth)
  @custom.fetch(key, default)
end
present?(key) click to toggle source

Returns whether key is present among the settings.

@param [Symbol] key @return [true|false]

# File lib/racket/settings/base.rb, line 60
def present?(key)
  meth = key.to_sym
  respond_to?(meth) || @custom.key?(key)
end
store(key, value) click to toggle source

Sets/updates a custom setting in the application.

@param [Symbol] key @param [Object] value @return [nil]

# File lib/racket/settings/base.rb, line 70
def store(key, value)
  raise ArgumentError,
        "Cannot overwrite standard setting #{key}" if respond_to?("#{key}=".to_sym)
  (@custom[key] = value) && nil
end