Sha256: da9e0c23120469bf1bc2f69bee5059a6f35447fa338678f2843afdd79e1d5d6f
Contents?: true
Size: 989 Bytes
Versions: 1
Compression:
Stored size: 989 Bytes
Contents
require 'cognition/version' require 'cognition/message' require 'cognition/matcher' require 'cognition/plugins/base' require 'cognition/plugins/ping' module Cognition extend self attr_accessor :plugins, :matchers def reset @matchers = [] @plugins = [] register(Cognition::Plugins::Ping) end def register(klass) return false if plugin_names.include? klass.to_s plugins << klass.new end def process_message(msg) response = false matchers.each do |matcher| if matcher.attempt(msg) response = matcher.response break end end response ? response : help end def help "No such command:\n\n #{matchers.map(&:help).join('\n')}" end def matchers plugins.collect(&:matchers).flatten.compact end def plugin_names plugins.map { |p| p.class.name } end def plugins @plugins ||= [] end end # Default plugin, responds to 'ping' with 'PONG' Cognition.register(Cognition::Plugins::Ping)
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cognition-0.1.0 | lib/cognition.rb |