+ def register(item)
+ unless item.kind_of?(Value)
+ raise ArgumentError,"item must be an Irc::Bot::Config::Value"
+ end
+ @items[item.key] = item
+ end
+
+ # currently we store values in a hash but this could be changed in the
+ # future. We use hash semantics, however.
+ # components that register their config keys and setup defaults are
+ # supported via []
+ def [](key)
+ # return @items[key].value if @items.has_key?(key)
+ return @items[key.to_sym].value if @items.has_key?(key.to_sym)
+ # try to still support unregistered lookups
+ # but warn about them
+ # if @config.has_key?(key)
+ # warning "Unregistered lookup #{key.inspect}"
+ # return @config[key]
+ # end
+ if @config.has_key?(key.to_sym)
+ warning _("Unregistered lookup #{key.to_sym.inspect}")
+ return @config[key.to_sym]
+ end
+ return false
+ end
+
+ def []=(key, value)
+ return @items[key.to_sym].set(value) if @items.has_key?(key.to_sym)
+ if @config.has_key?(key.to_sym)
+ warning _("Unregistered lookup #{key.to_sym.inspect}")
+ return @config[key.to_sym] = value
+ end
+ end
+
+ # pass everything else through to the hash
+ def method_missing(method, *args, &block)
+ return @config.send(method, *args, &block)
+ end
+