Class Irc::BotRegistryAccessor
|
|
If you don't need to store objects, and strictly want a persistant hash of
strings, you can override the store/restore methods to suit your needs, for
example (in your plugin):
def initialize
class << @registry
def store(val)
val
end
def restore(val)
val
end
end
end
Your plugins section of the registry is private, it has its own namespace
(derived from the plugin's class name, so change it and lose your data).
Calls to registry.each etc, will only iterate over your namespace.
plugins don't call this - a BotRegistryAccessor is created for them
and is accessible via @registry.
use this to chop up your namespace into bits, so you can keep and reference
separate object stores under the same registry
convert value to string form for storing in the registry defaults to
Marshal.dump(val) but you can override this in your module's registry
object to use any method you like. For example, if you always just handle
strings use:
def store(val)
val
end
restores object from string form, restore(store(val)) must return val. If
you override store, you should override restore to reverse the action. For
example, if you always just handle strings use:
def restore(val)
val
end
lookup a key in the registry
set a key in the registry
set the default value for registry lookups, if the key sought is not found,
the default will be returned. The default default (har) is nil.
just like Hash#each_value
just like Hash#has_value?
delete a key from the registry
returns a list of your keys
Return an array of all associations [key, value] in your namespace
Return an hash of all associations {key => value} in your namespace
empties the registry (restricted to your namespace)
returns an array of the values in your namespace of the registry
returns the number of keys in your registry namespace