| 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