]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/keywords.rb
keywords plugin: export data to flat factoids file
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / keywords.rb
index 5daff9f660edd99636b080d80b60472c19ecaf0d..424df8749d31bc9c290abf1f0d94bc5f893b5fa8 100644 (file)
@@ -28,6 +28,16 @@ class Keyword
     end
   end
 
+  # return an array of all the possible values
+  def to_factoids(key)
+    ar = Array.new
+    @values.each { |val|
+      debug "key #{key}, value #{val}"
+      ar << "%s %s %s" % [key, @type, val]
+    }
+    return ar
+  end
+
   # describe the keyword (show all values without interpolation)
   def desc
     @values.join(" | ")
@@ -436,11 +446,41 @@ class Keywords < Plugin
     end
   end
 
+  # export keywords to factoids file
+  def keyword_factoids_export
+    ar = Array.new
+
+    debug @keywords.keys
+
+    @keywords.each { |k, val|
+      next unless val
+      kw = Keyword.restore(val)
+      ar |= kw.to_factoids(k)
+    }
+
+    # TODO check factoids config
+    # also TODO: runtime export
+    dir = File.join(@bot.botclass,"factoids")
+    fname = File.join(dir,"keyword_factoids.rbot")
+
+    Dir.mkdir(dir) unless FileTest.directory?(dir)
+    Utils.safe_save(fname) do |file|
+      file.puts ar
+    end
+  end
+
   # privmsg handler
   def privmsg(m)
     case m.plugin
     when "keyword"
       case m.params
+      when /^export$/
+        begin
+          keyword_factoids_export
+          m.okay
+        rescue
+          m.reply _("failed to export keywords as factoids (%{err})" % {:err => $!})
+        end
       when /^set\s+(.+?)\s+(is|are)\s+(.+)$/
         keyword_command(m, $1, $2, $3) if @bot.auth.allow?('keycmd', m.source, m.replyto)
       when /^forget\s+(.+)$/