Skip to content

Commit

Permalink
Initial nato phonetic translation
Browse files Browse the repository at this point in the history
  • Loading branch information
itkovian committed Jul 5, 2013
1 parent 7886048 commit 43137f6
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/NumberSix/Handlers.hs
Expand Up @@ -6,6 +6,7 @@ module NumberSix.Handlers


--------------------------------------------------------------------------------
import qualified NumberSix.Handlers.AlfaPapaTango
import qualified NumberSix.Handlers.Binary
import qualified NumberSix.Handlers.Bomb
import qualified NumberSix.Handlers.EightBall
Expand Down Expand Up @@ -52,7 +53,8 @@ import NumberSix.Irc
--------------------------------------------------------------------------------
handlers :: [UninitializedHandler]
handlers =
[ NumberSix.Handlers.Binary.handler
[ NumberSix.Handlers.AlfaPapaTango.handler
, NumberSix.Handlers.Binary.handler
, NumberSix.Handlers.Bomb.handler
, NumberSix.Handlers.EightBall.handler
, NumberSix.Handlers.GitHub.handler
Expand Down
60 changes: 60 additions & 0 deletions src/NumberSix/Handlers/AlfaPapaTango.hs
@@ -0,0 +1,60 @@
{-# LANGUAGE OverloadedStrings #-}
module NumberSix.Handlers.Sup
( handler
) where

import Control.Applicative ((<$>))
import Control.Monad (when)

import qualified Data.ByteString as B
import Data.List (intercalate)
import qualified Data.Map as M

import NumberSix.Irc
import NumberSix.Message

handler :: UninitializedHandler
handler = makeHandler "AlfaPapaTango" [alfaPapaTangoHook]

alfaPapaTangoHook :: Irc ()
alfaPapaTangoHook = onCommand "PRIVMSG" $ do
text <- getMessageText
sender <- getSender
let replyText = map translate text
write $ sender <> " " <> replyText

letterMap = M.fromList $ zip [a..z] $
[ "alfa"
, "bravo"
, "charlie"
, "delta"
, "echo"
, "foxtrot"
, "golf"
, "hotel"
, "india"
, "julliett"
, "kilo"
, "lima"
, "mike"
, "november"
, "oscar"
, "papa"
, "quebec"
, "romeo"
, "sierra"
, "tango"
, "uniform"
, "victor"
, "whiskey"
, "xray"
, "yankee"
, "zulu"
]

translate :: String -> String
translate letters =
let ws = map (\c -> case Map.lookup c letterMap of
Just s -> s
Nothing -> [c]) letters
in intercalate (" " :: String) ws

0 comments on commit 43137f6

Please sign in to comment.