]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
lart pluing: use plugin.map instead of plugin.register
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Wed, 14 Feb 2007 15:22:33 +0000 (15:22 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Wed, 14 Feb 2007 15:22:33 +0000 (15:22 +0000)
data/rbot/plugins/lart.rb

index 2f470c96d029d9c90058618e80dec80102cd5a12..9b627fc5ad836c469a93e1e51e26bd1bb578aad1 100644 (file)
 
 class LartPlugin < Plugin
 
-  # Keep a 1:1 relation between commands and handlers
-  @@handlers = {
-    "lart" => "handle_lart",
-    "praise" => "handle_praise",
-    "addlart" => "handle_addlart",
-    "rmlart" => "handle_rmlart",
-    "addpraise" => "handle_addpraise",
-    "rmpraise" => "handle_rmpraise"
-  }
-
-  def name
-    "lart"
-  end
-
   def initialize
     @larts = Array.new
     @praises = Array.new
@@ -79,9 +65,6 @@ class LartPlugin < Plugin
     @changed = false
   end
 
-  def cleanup
-  end
-
   def save
     return unless @changed
     Dir.mkdir("#{@bot.botclass}/lart") if not FileTest.directory? "#{@bot.botclass}/lart"
@@ -95,89 +78,67 @@ class LartPlugin < Plugin
     @changed = false
   end
 
-  def privmsg(m)
-    if not m.params
-      m.reply "What a crazy fool!  Did you mean |help stats?"
-      return
-    end
-
-    meth = self.method(@@handlers[m.plugin])
-    meth.call(m) if(@bot.auth.allow?(m.plugin, m.source, m.replyto))
-  end
-
   def help(plugin, topic="")
     "Lart: The lart plugin allows you to lart/praise someone in the channel. You can also add new larts and new praises as well as delete them. For the curious, LART is an acronym for Luser Attitude Readjustment Tool. Usage: lart <who> [<reason>] -- larts <who> for <reason>. praise <who> [<reason>] -- praises <who> for <reason>. [add|rm][lart|praise] -- Add or remove a lart or praise."
   end
 
-  # The following are command handler
-
-  def handle_lart(m)
-    for_idx = m.params =~ /\s+\bfor\b/
-    if for_idx
-      nick = m.params[0, for_idx]
-    else
-      nick = m.params
-    end
+  def handle_lart(m, params)
     lart = @larts[get_msg_idx(@larts.length)]
-    if lart == nil
+    if not lart
       m.reply "I dunno any larts"
       return
     end
-    if nick == @bot.nick
-      lart = replace_who lart, m.sourcenick
-      lart << " for trying to make me lart myself"
-    else
-      lart = replace_who lart, nick
-      lart << m.params[for_idx, m.params.length] if for_idx
+    who = params[:who].to_s
+    reason = params[:why]
+    if who == @bot.nick
+      who = m.sourcenick
+      reason = "for trying to make me lart myself"
     end
+    lart = replace_who lart, who
+    lart << " #{reason}" unless reason.empty?
 
-    @bot.action m.replyto, lart
+    m.act lart
   end
 
-  def handle_praise(m)
-    for_idx = m.params =~ /\s+\bfor\b/
-    if for_idx
-      nick = m.params[0, for_idx]
-    else
-      nick = m.params
-    end
+  def handle_praise(m, params)
     praise = @praises[get_msg_idx(@praises.length)]
     if not praise
       m.reply "I dunno any praises"
       return
     end
-
-    if nick == m.sourcenick
-      praise = @larts[get_msg_idx(@larts.length)]
-      praise = replace_who praise, nick
-    else
-      praise = replace_who praise, nick
-      praise << m.params.gsub("#{nick}", "")
+    who = params[:who].to_s
+    reason = params[:why]
+    if who == m.sourcenick
+      params[:why] = "for praising himself"
+      handle_lart(m, params)
+      return
     end
+    praise = replace_who praise, who
+    praise << " #{reason}" unless reason.empty?
 
-    @bot.action m.replyto, praise
+    m.act praise
   end
 
-  def handle_addlart(m)
-    @larts << m.params
+  def handle_addlart(m, params)
+    @larts << params[:lart]
     @changed = true
     m.okay
   end
 
-  def handle_rmlart(m)
-    @larts.delete m.params
+  def handle_rmlart(m, params)
+    @larts.delete params[:lart]
     @changed = true
     m.okay
   end
 
-  def handle_addpraise(m)
-    @praises << m.params
+  def handle_addpraise(m, params)
+    @praises << params[:praise]
     @changed = true
     m.okay
   end
 
-  def handle_rmpraise(m)
-    @praises.delete m.params
+  def handle_rmpraise(m, params)
+    @praises.delete params[:praise]
     @changed = true
     m.okay
   end
@@ -192,12 +153,14 @@ class LartPlugin < Plugin
   end
 
 end
+
 plugin = LartPlugin.new
-plugin.register("lart")
-plugin.register("praise")
 
-plugin.register("addlart")
-plugin.register("addpraise")
+plugin.map "lart *who [*why]", :requirements => { :why => /(?:for|because)\s+.*/ }, :action => :handle_lart
+plugin.map "praise *who [*why]", :requirements => { :why => /(?:for|because)\s+.*/ }, :action => :handle_praise
+
+plugin.map "addlart *lart", :action => :handle_addlart
+plugin.map "addpraise *praise", :action => :handle_addpraise
 
-plugin.register("rmlart")
-plugin.register("rmpraise")
+plugin.map "rmlart *lart", :action => :handle_rmlart
+plugin.map "rmpraise *praise", :action => :handle_rmpraise