Some documentation + example config file

master
Robert "ar" Gerus 2013-05-30 08:38:37 +02:00
parent 8654d3efd7
commit 9cf5513b7c
3 changed files with 29 additions and 0 deletions

17
config.example.rb Normal file
View File

@ -0,0 +1,17 @@
Config = {
:server => {
:host => "irc.freenode.net",
:port => 6667,
:realname => "repost",
},
:client => {
:nick => "repost",
:channels => ["#repost-test"]
},
# Space separated list of plugin names
:plugins => %w()
}

View File

@ -5,11 +5,16 @@ class Repost < EventMachine::IRC::Client
def dispatch_raw_message(message = {})
self.triggers = [] if self.triggers.nil?
self.triggers.each do |trigger|
# Having per-command lists of blocks of code to call would be
# faster, but it's not a problem for now. Might refactor this loop
# and register_trigger() method if it comes to that.
trigger[:code].call(message) if message[:command] == trigger[:command]
end
end
def register_trigger(command, &code)
# Make sure the Array of triggers is not empty and then append to it a
# Hash containing the command it should be called at and the code
self.triggers = [] if self.triggers.nil?
self.triggers << {:command => command, :code => code}
end

7
run.rb
View File

@ -3,6 +3,7 @@
require 'rubygems'
require 'eventmachine'
require 'em-irc'
# Our config file is just a single Hash, nothing too fancy.
require_relative 'config'
require_relative 'repost'
@ -23,12 +24,18 @@ repost = Repost.new do
end
end
# The provided triggers/callbacks for actions are limited - there are no
# quit/part callbacks, for example - and we'd have to catch raw messages
# anyway. And since we're doing that, we can just go ahead and hook up to
# raw callbacks exclusively.
on :raw do |message|
self.dispatch_raw_message message
end
end
# Loading plugins here, because we need the repost object in scope to be able
# to do anything.
Config[:plugins].each do |plugin|
puts "Loading plugin #{plugin}"
eval File.read(File.dirname($0) + "/plugins/#{plugin}.rb")