mcbot/cmds/dict.lua
author Mikael Berthe <mikael@lilotux.net>
Tue, 13 Apr 2010 20:34:59 +0200
changeset 2 c7ac7b6a76e0
parent 0 89add07d6fe4
child 16 064a50911e05
permissions -rw-r--r--
Small update to dict command
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
local function dict (args)
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
    if not args then return nil, "Give me a word, please" end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
    -- Be careful as we pass it as an argument to a shell command
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
    local word = string.match(args, "^(%w+)[%s%?%.%!]*$")
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
    if not word then return nil, "Can you repeat please?" end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
    local cmd = "/usr/bin/dict "..word.." 2> /dev/null"
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
    local fh = io.popen(cmd)
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
    result = fh:read("*a")  -- read dict output
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
    fh:close()
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
    if result:match("^$") then return nil, "dict: No output" end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
    -- Sometimes dict outpur is ugly... Let's filter out whitespace.
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
    result = result:gsub("[ \t]+\n", "\n"):gsub("\n\n\n+", "\n\n")
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
    -- Trim trailing newlines
2
c7ac7b6a76e0 Small update to dict command
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    17
    result = result:gsub("\n+$", "")
c7ac7b6a76e0 Small update to dict command
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    18
    return result
0
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
mcbot_register_command("dict", dict)