{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses #-} -- | GNU Talk Filters -- needs: http://www.hyperrealm.com/main.php?s=talkfilters -- Edward Kmett 2006 module Plugin.Filter where import Plugin $(plugin "Filter") instance Module FilterModule () where moduleCmds _ = ["austro","b1ff","brooklyn","chef","cockney","drawl","dubya","fudd","funetak","jethro","jive","kraut","pansy","pirate","postmodern","redneck","valspeak","warez"] moduleHelp _ "austro" = "austro . Talk like Ahhhnold" moduleHelp _ "b1ff" = "b1ff . B1ff of usenet yore" moduleHelp _ "brooklyn" = "brooklyn . Yo" moduleHelp _ "chef" = "chef . Bork bork bork" moduleHelp _ "cockney" = "cockney . Londoner accent" moduleHelp _ "drawl" = "drawl . Southern drawl" moduleHelp _ "dubya" = "dubya . Presidential filter" moduleHelp _ "fudd" = "fudd . Fudd, Elmer" moduleHelp _ "funetak" = "funetak . Southern drawl" moduleHelp _ "jethro" = "jethro . Now listen to a story 'bout a man named Jed..." moduleHelp _ "jive" = "jive . Slap ma fro" moduleHelp _ "kraut" = "kraut . German accent" moduleHelp _ "pansy" = "pansy . Effeminate male" moduleHelp _ "pirate" = "pirate . Talk like a pirate" moduleHelp _ "postmodern" = "postmodern . Feminazi" moduleHelp _ "redneck" = "redneck . Deep south" moduleHelp _ "valspeak" = "valley . Like, ya know?" moduleHelp _ "warez" = "warez . H4x0r" process_ _ f s = do let usage = ["usage: " ++ f ++ " "] case words s of [] -> return usage t -> io (runFilter f (unwords t)) pathTo :: String -> String pathTo f = "/usr/local/bin/" ++ f runFilter :: String -> String -> IO [String] runFilter f s = do (out,_,_) <- popen (pathTo f) [] (Just s) return $ result out where result [] = ["Couldn't run the filter."] result xs = filter (not . all (==' ')) . lines $ xs