class Racket::Settings::Base
Base
class for settings.
Public Class Methods
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
# 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
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
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
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
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
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