]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/lart.rb
plugin(oxford): moved to lexico.com, closes #13
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / lart.rb
index fbc1f9e429f052768adf4410560ba431352cfd91..aeaad7333246153b731d6e613f1e60ac0ba1d32a 100644 (file)
@@ -41,12 +41,12 @@ class LartPlugin < Plugin
 
     # We may be on an old installation, so on the first run read non-language-specific larts
     unless defined?(@oldlart)
-      @oldlart = "#{@bot.botclass}/lart/larts"
-      @oldpraise = "#{@bot.botclass}/lart/praise"
+      @oldlart = datafile 'larts'
+      @oldpraise = datafile 'praise'
     end
 
-    @lartfile.replace "#{@bot.botclass}/lart/larts-#{lang}"
-    @praisefile.replace "#{@bot.botclass}/lart/praises-#{lang}"
+    @lartfile.replace(datafile("larts-#{lang}"))
+    @praisefile.replace(datafile("praises-#{lang}"))
     @larts.clear
     @praises.clear
     if File.exists? @lartfile
@@ -72,8 +72,7 @@ class LartPlugin < Plugin
 
   def save
     return unless @changed
-    Dir.mkdir("#{@bot.botclass}/lart") if not FileTest.directory? "#{@bot.botclass}/lart"
-    # TODO implement safe saving here too
+    Dir.mkdir(datafile) unless FileTest.directory? datafile
     Utils.safe_save(@lartfile) { |file|
       file.puts @larts
     }
@@ -95,6 +94,9 @@ class LartPlugin < Plugin
     end
     who = params[:who].to_s
     reason = params[:why]
+    if who == "me"
+      who = m.sourcenick
+    end
     if who == @bot.nick
       who = m.sourcenick
       reason = "for trying to make me lart myself"
@@ -113,7 +115,8 @@ class LartPlugin < Plugin
     end
     who = params[:who].to_s
     reason = params[:why]
-    if who == m.sourcenick
+    if who == m.sourcenick || who == "me"
+      params[:who] = m.sourcenick
       params[:why] = "for praising himself"
       handle_lart(m, params)
       return
@@ -136,6 +139,16 @@ class LartPlugin < Plugin
     m.okay
   end
 
+  def handle_listlart(m, params)
+    rx = Regexp.new(params[:lart].to_s, true)
+    list = @larts.grep(rx)
+    unless list.empty?
+      m.reply list.join(" | "), :split_at => /\s+\|\s+/
+    else
+      m.reply "no lart found matching #{params[:lart]}"
+    end
+  end
+
   def handle_addpraise(m, params)
     @praises << params[:praise].to_s
     @changed = true
@@ -148,6 +161,16 @@ class LartPlugin < Plugin
     m.okay
   end
 
+  def handle_listpraise(m, params)
+    rx = Regexp.new(params[:praise].to_s, true)
+    list = @praises.grep(rx)
+    unless list.empty?
+      m.reply list.join(" | "), :split_at => /\s+\|\s+/
+    else
+      m.reply "no praise found matching #{params[:praise]}"
+    end
+  end
+
   #  The following are utils for larts/praises
   def replace_who(msg, nick)
     msg.gsub(/<who>/i, "#{nick}")
@@ -169,3 +192,6 @@ plugin.map "addpraise *praise", :action => :handle_addpraise
 
 plugin.map "rmlart *lart", :action => :handle_rmlart
 plugin.map "rmpraise *praise", :action => :handle_rmpraise
+
+plugin.map "listlart *lart", :action => :handle_listlart
+plugin.map "listpraise *praise", :action => :handle_listpraise