Class: Racket::Settings::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/racket/settings/base.rb

Overview

Base class for settings.

Direct Known Subclasses

Application, Controller

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(defaults = {}) ⇒ Base

Returns a new instance of Base.



24
25
26
27
28
29
30
31
32
# 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

Class Method Details

.setting(symbol, default = nil) ⇒ nil

Creates a setting with a default value.

Parameters:

  • symbol (Symbol)
  • default (Object) (defaults to: nil)

Returns:

  • (nil)


81
82
83
84
85
86
87
88
# File 'lib/racket/settings/base.rb', line 81

def self.setting(symbol, default = nil)
  ivar = "@#{symbol}".to_sym
  define_method symbol do
    instance_variable_set(ivar, default) unless instance_variables.include?(ivar)
    instance_variable_get(ivar)
  end
  attr_writer(symbol) && nil
end

Instance Method Details

#delete(key) ⇒ nil

Deletes a custom setting associated with the application.

Parameters:

  • key (Symbol)

Returns:

  • (nil)


38
39
40
41
42
# File 'lib/racket/settings/base.rb', line 38

def delete(key)
  fail ArgumentErrpr,
       "Cannot delete standard setting #{key}" if respond_to?(key.to_sym)
  @custom.delete(key) && nil
end

#fetch(key, default = nil) ⇒ Object

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.

Parameters:

  • key (Symbol)
  • default (Object) (defaults to: nil)

Returns:

  • (Object)


50
51
52
53
54
# 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) ⇒ true|false

Returns whether key is present among the settings.

Parameters:

  • key (Symbol)

Returns:

  • (true|false)


60
61
62
63
# 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) ⇒ nil

Sets/updates a custom setting in the application.

Parameters:

  • key (Symbol)
  • value (Object)

Returns:

  • (nil)


70
71
72
73
74
# File 'lib/racket/settings/base.rb', line 70

def store(key, value)
  fail ArgumentError,
       "Cannot overwrite standard setting #{key}" if respond_to?("#{key}=".to_sym)
  (@custom[key] = value) && nil
end