def initialize(botmodule, template, hash={})
raise ArgumentError, "Third argument must be a hash!" unless hash.kind_of?(Hash)
@defaults = hash[:defaults].kind_of?(Hash) ? hash.delete(:defaults) : {}
@requirements = hash[:requirements].kind_of?(Hash) ? hash.delete(:requirements) : {}
@template = template
case botmodule
when String
@botmodule = botmodule
when Plugins::BotModule
@botmodule = botmodule.name
else
raise ArgumentError, "#{botmodule.inspect} is not a botmodule nor a botmodule name"
end
self.items = template
@dyn_items = @items.collect { |it|
if it.kind_of?(Symbol)
i = it.to_s
opt = MessageParameter.new(i)
if i.sub!(/^\*/,"")
opt.name = i
opt.multi = true
end
opt.default = @defaults[opt.name]
opt.collector = @requirements[opt.name]
opt
else
nil
end
}
@dyn_items.unshift(template).compact!
debug "Items: #{@items.inspect}; dyn items: #{@dyn_items.inspect}"
self.regexp = template
debug "Command #{template.inspect} in #{@botmodule} will match using #{@regexp}"
set_auth_path(hash)
unless hash.has_key?(:action)
hash[:action] = items[0]
end
@options = hash
end