Class | Irc::Bot::Config::Value |
In: |
lib/rbot/config.rb
|
Parent: | Object |
auth_path | [R] | |
desc | [R] | |
key | [R] | |
manager | [R] | |
order | [R] | |
requires_rescan | [R] | |
requires_restart | [R] | |
type | [R] | |
wizard | [R] |
# File lib/rbot/config.rb, line 32 32: def initialize(key, params) 33: @manager = Config.manager 34: # Keys must be in the form 'module.name'. 35: # They will be internally passed around as symbols, 36: # but we accept them both in string and symbol form. 37: unless key.to_s =~ /^.+\..+$/ 38: raise ArgumentError,"key must be of the form 'module.name'" 39: end 40: @order = @@order 41: @@order += 1 42: @key = key.to_sym 43: if @manager.overrides.key?(@key) 44: @default = @manager.overrides[@key] 45: elsif params.has_key? :default 46: @default = params[:default] 47: else 48: @default = false 49: end 50: @desc = params[:desc] 51: @type = params[:type] || String 52: @on_change = params[:on_change] 53: @validate = params[:validate] 54: @wizard = params[:wizard] 55: @requires_restart = params[:requires_restart] 56: @requires_rescan = params[:requires_rescan] 57: @auth_path = "config::key::#{key.sub('.','::')}" 58: end
# File lib/rbot/config.rb, line 59 59: def default 60: if @default.instance_of?(Proc) 61: @default.call 62: else 63: @default 64: end 65: end
# File lib/rbot/config.rb, line 66 66: def get 67: return @manager.config[@key] if @manager.config.has_key?(@key) 68: return default 69: end
# File lib/rbot/config.rb, line 71 71: def set(value, on_change = true) 72: @manager.config[@key] = value 73: @manager.changed = true 74: @on_change.call(@manager.bot, value) if on_change && @on_change 75: return self 76: end
# File lib/rbot/config.rb, line 77 77: def unset 78: @manager.config.delete(@key) 79: @manager.changed = true 80: @on_change.call(@manager.bot, value) if @on_change 81: return self 82: end
# File lib/rbot/config.rb, line 104 104: def validate(val, validator = @validate) 105: case validator 106: when false, nil 107: return true 108: when Proc 109: return validator.call(val) 110: when Regexp 111: raise ArgumentError, "validation via Regexp only supported for strings!" unless String === val 112: return validator.match(val) 113: else 114: raise ArgumentError, "validation type #{validator.class} not supported" 115: end 116: end