--[[ cowsay.lua - say and show ascii art Prerequisites The Lua plugin for weechat must be installed and enabled Usage: /cowsay - without params will show all commands avalible /cowsay nerd [ARG1] - show nerd with name ARG1 /cowsay goat [ARG1] - show goat saying ARG1 /cowsay shoot [ARG1] - show shooting at lying ARG1 /cowsay juice [ARG1] [ARG2] - show juice box with first line ARG1 and second line ARG2 ]] -------------------------------------------------------------------------------- -- my drawing function ascii_nerd( name ) local s = "" s = s .. [[ \ | | / | o o | \ O / | | ]] local l = string.len(name) for i=1,l+4 do s = s .. "+" end s = s .. "\n| " .. name .. " |\n" for i=1,l+4 do s = s .. "+" end return s end -------------------------------------------------------------------------------- --from beej.us function ascii_goat( text ) local s = "" s = s .. [[ )_) ___|oo) ]] s = s .. text .. "\n" s = s .. [['| |\_| |||| # ````]] return s end -------------------------------------------------------------------------------- --http://ascii.co.uk/art/shoot function ascii_shoot( name ) local s = "" if name == nil then name = "" else name = "("..name..")" end s = s .. [[ O <\==- - - - - - - --- ./ \ _/\_\O ]] .. name .. [[ ]] return s end -------------------------------------------------------------------------------- --http://ascii.co.uk/art/juice function ascii_juice( name1, name2 ) local s = "" if name1 == nil then name1 = "" end if name2 == nil then name2 = "" end local l1 = string.len( name1 ) local l2 = string.len( name2 ) if l1 > 5 then name1 = string.sub( name1, 1, 5 ) elseif l1 < 5 then while string.len(name1) < 5 do name1 = name1 .. ' ' end end if l2 > 5 then name2 = string.sub( name2, 1, 5 ) elseif l2 < 5 then while string.len( name2 ) < 5 do name2 = name2 .. ' ' end end s = s .. [[ __ /.- ______ // /______'/| [ ]| [ ]] .. name1 .. [[ ]| [ ]] .. name2 .. [[ ]| [ _\_ ]| [ ::: ]| [ :' ]/ '-------']] return s end -------------------------------------------------------------------------------- -- http://ascii.co.uk/art/coffee function ascii_coffee( name ) local s = "" if name == nil then name = "Single Expresso" end if name ~= nil then name = "Single Expresso for " .. name end s = s .. [[ .-=-. ,|`~'| `| | ]] .. name .. [[ `~']] return s end -------------------------------------------------------------------------------- --http://ascii.co.uk/art/pool function ascii_pool( name ) local s = "" if name == nil then name = "" end s = s .. [[,_____,_____, 6 __ T\ :. .^\,_/_\_I_ ]] .. name .. [[ I ^T=====;=====T /| I I _|_|]] return s end -------------------------------------------------------------------------------- --http://ascii.co.uk/art/cat function ascii_cat( text ) local s = "" if text == nil then text = "mmeeoowwrr!" end s = s .. [[ ) _. ]] .. text .. [[ (___)'' / ,_,/ /'"\ )\]] return s end function cs_print_list() weechat.print("","buf "..weechat.current_buffer()) weechat.print(weechat.current_buffer(),"/msg #mainlv br br") end function cs_command( cmd, args ) cmd = string.lower(cmd) weechat.print("",cmd..":"..args) if cmd == "nerd" then weechat.command( weechat.current_buffer(), ascii_nerd(args) ) elseif cmd == "goat" then weechat.command( weechat.current_buffer(), ascii_goat(args) ) elseif cmd == "shoot" then weechat.command( weechat.current_buffer(), ascii_shoot(args) ) elseif cmd == "coffee" then weechat.command( weechat.current_buffer(), ascii_coffee(args) ) elseif cmd == "pool" then weechat.command( weechat.current_buffer(), ascii_pool(args) ) elseif cmd == "cat" then weechat.command( weechat.current_buffer(), ascii_cat(args) ) else weechat.print(weechat.current_buffer(), "Unknown command") end end -- -- Main entry point -- function cowsay_init(data, buffer, args) local cmd, params = string.match(args, "(%a+)%s*(.*)") if not cmd or cmd == "" then cs_print_list() return weechat.WEECHAT_RC_OK end cs_command( cmd, params ) return weechat.WEECHAT_RC_OK end -- -- Register with weechat -- weechat.register("cowsay", "FreeArtMan", "0.0.1", "Beerware", "ASCII drawing in commanline", "", "") weechat.hook_command("cowsay", "cowsay", -- description "[shoot , goat , juice , nerd , coffee , pool , cat ", -- args " list: \n".. " add: \n".. " del: \n\n".. "If no command is given, all phrases are listed.", "nerd|juice|goat|shoot|coffee|pool|, -- completion "cowsay_init", "")