mcbot/cmds/littre.lua
changeset 54 be04d7241ef6
child 55 7f235c928661
equal deleted inserted replaced
53:0e29690ab5d9 54:be04d7241ef6
       
     1 
       
     2 local littre = { ["desc"] = "French Dictionnary Littré" }
       
     3 
       
     4 function littre.cmd (args)
       
     5     if not args then return nil, "Give me a word, please" end
       
     6     -- Be careful as we pass it as an argument to a shell command
       
     7     local word = string.match(args, "^([%wàäâéèëêïîöôùüû]+)[%s%?%.%!]*$")
       
     8     if not word then return nil, "Can you repeat please?" end
       
     9 
       
    10     local cmd = "/usr/bin/sdcv "..word.." 2> /dev/null"
       
    11     local fh = io.popen(cmd)
       
    12     result = fh:read("*a")  -- read littre output
       
    13     fh:close()
       
    14     if not result or result:match("^$") then return nil, "littre: No output" end
       
    15 
       
    16     -- Let's filter out whitespace.
       
    17     result = result:gsub("[ \t]+\n", "\n"):gsub("\n\n\n+", "\n\n")
       
    18     -- Trim trailing newlines
       
    19     result = result:gsub("\n+$", "")
       
    20     return result
       
    21 end
       
    22 
       
    23 mcbot_register_command("littre", littre)