author | Mikael Berthe <mikael@lilotux.net> |
Sun, 25 Nov 2012 19:29:32 +0100 | |
changeset 65 | 2cefbe9f3ac6 |
parent 56 | a7c6c2b3454b |
child 66 | d9c00a9fe9d5 |
permissions | -rw-r--r-- |
54 | 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 |
|
56
a7c6c2b3454b
littre: allow some more chars: space and ', -
Mikael Berthe <mikael@lilotux.net>
parents:
55
diff
changeset
|
7 |
local word = string.match(args, "^([%wàäâéèëêïîöôùüûç' -]+)[%s%?%.%!]*$") |
54 | 8 |
if not word then return nil, "Can you repeat please?" end |
9 |
||
56
a7c6c2b3454b
littre: allow some more chars: space and ', -
Mikael Berthe <mikael@lilotux.net>
parents:
55
diff
changeset
|
10 |
local cmd = '/usr/bin/sdcv --non-interactive -- "'..word..'" 2> /dev/null' |
54 | 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) |