mcbot/cmds/littre.lua
author Mikael Berthe <mikael@lilotux.net>
Tue, 27 Nov 2012 16:26:04 +0100
changeset 66 d9c00a9fe9d5
parent 56 a7c6c2b3454b
permissions -rw-r--r--
Add notices before public release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     1
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     2
--  This module is part of the McBot / mcabbot project
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     3
--
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     4
-- Copyright (C) 2010-2012 Mikael Berthe <mikael@lilotux.net>
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     5
--
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     6
-- This program is free software; you can redistribute it and/or modify
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     7
-- it under the terms of the GNU General Public License as published by
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     8
-- the Free Software Foundation; either version 2 of the License, or (at
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
     9
-- your option) any later version.
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
    10
--
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
    11
-- Please check the license in the COPYING file at the root of the tree.
d9c00a9fe9d5 Add notices before public release
Mikael Berthe <mikael@lilotux.net>
parents: 56
diff changeset
    12
--
54
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
local littre = { ["desc"] = "French Dictionnary Littré" }
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
function littre.cmd (args)
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
    if not args then return nil, "Give me a word, please" end
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
    -- 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
    19
    local word = string.match(args, "^([%wàäâéèëêïîöôùüûç' -]+)[%s%?%.%!]*$")
54
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
    if not word then return nil, "Can you repeat please?" end
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
56
a7c6c2b3454b littre: allow some more chars: space and ', -
Mikael Berthe <mikael@lilotux.net>
parents: 55
diff changeset
    22
    local cmd = '/usr/bin/sdcv --non-interactive -- "'..word..'" 2> /dev/null'
54
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
    local fh = io.popen(cmd)
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
    result = fh:read("*a")  -- read littre output
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    25
    fh:close()
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    26
    if not result or result:match("^$") then return nil, "littre: No output" end
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    27
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
    -- Let's filter out whitespace.
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
    result = result:gsub("[ \t]+\n", "\n"):gsub("\n\n\n+", "\n\n")
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
    -- Trim trailing newlines
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
    result = result:gsub("\n+$", "")
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
    return result
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
end
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
be04d7241ef6 New command: littre
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
mcbot_register_command("littre", littre)