]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
filters: filters_ui core module to manage filters from IRC
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Fri, 14 Mar 2008 00:13:20 +0000 (01:13 +0100)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Fri, 14 Mar 2008 00:13:20 +0000 (01:13 +0100)
lib/rbot/core/filters_ui.rb [new file with mode: 0644]

diff --git a/lib/rbot/core/filters_ui.rb b/lib/rbot/core/filters_ui.rb
new file mode 100644 (file)
index 0000000..f4f0719
--- /dev/null
@@ -0,0 +1,54 @@
+#-- vim:sw=2:et
+#++
+#
+# :title: filters management from IRC
+#
+# Author:: Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com>
+# Copyright:: (C) 2008 Giuseppe Bilotta
+# License:: GPL v2
+
+class FiltersModule < CoreBotModule
+
+  def initialize
+    super
+    @bot.clear_filters
+  end
+
+  def help(plugin, topic="")
+    "filters list [<group>] => list filters (in group <group>) | filters search <pat> => list filters matching regexp <pat>"
+  end
+
+  def do_list(m, params)
+    g = params[:group]
+    ar = @bot.filter_names(g).map { |s| s.to_s }.sort!
+    if ar.empty?
+      if g
+        msg = _("no filters in group %{g}") % {:g => g}
+      else
+        msg = _("no known filters")
+      end
+    else
+      msg = _("known filters: ") << ar.join(", ") 
+    end
+    m.reply msg
+  end
+
+  def do_search(m, params)
+    l = @bot.filter_names.map { |s| s.to_s }
+    pat = params[:pat].to_s
+    sl = l.grep(Regexp.new(pat))
+    if sl.empty?
+      msg = _("no filters match %{pat}") % { :pat => pat }
+    else
+      msg = _("filters matching %{pat}: ") % { :pat => pat }
+      msg << sl.sort!.join(", ")
+    end
+    m.reply msg
+  end
+
+end
+
+plugin = FiltersModule.new
+
+plugin.map "filters list [:group]", :action => :do_list
+plugin.map "filters search *pat", :action => :do_search