New command: littre
authorMikael Berthe <mikael@lilotux.net>
Sun, 23 Oct 2011 13:54:17 +0200
changeset 54 be04d7241ef6
parent 53 0e29690ab5d9
child 55 7f235c928661
New command: littre
mcbot/cmds/littre.lua
mcbot/mcbot_engine.lua
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mcbot/cmds/littre.lua	Sun Oct 23 13:54:17 2011 +0200
@@ -0,0 +1,23 @@
+
+local littre = { ["desc"] = "French Dictionnary Littré" }
+
+function littre.cmd (args)
+    if not args then return nil, "Give me a word, please" end
+    -- Be careful as we pass it as an argument to a shell command
+    local word = string.match(args, "^([%wàäâéèëêïîöôùüû]+)[%s%?%.%!]*$")
+    if not word then return nil, "Can you repeat please?" end
+
+    local cmd = "/usr/bin/sdcv "..word.." 2> /dev/null"
+    local fh = io.popen(cmd)
+    result = fh:read("*a")  -- read littre output
+    fh:close()
+    if not result or result:match("^$") then return nil, "littre: No output" end
+
+    -- Let's filter out whitespace.
+    result = result:gsub("[ \t]+\n", "\n"):gsub("\n\n\n+", "\n\n")
+    -- Trim trailing newlines
+    result = result:gsub("\n+$", "")
+    return result
+end
+
+mcbot_register_command("littre", littre)
--- a/mcbot/mcbot_engine.lua	Sun Oct 23 13:45:29 2011 +0200
+++ b/mcbot/mcbot_engine.lua	Sun Oct 23 13:54:17 2011 +0200
@@ -26,6 +26,7 @@
 require "cmds.calc"
 require "cmds.spell"
 require "cmds.dict"
+require "cmds.littre"
 require "cmds.misc"
 require "cmds.xep"
 require "cmds.rfc"