packages feed

halma-telegram-bot-0.1.0.0: src/Game/Halma/TelegramBot/View/Pretty.hs

{-# LANGUAGE OverloadedStrings #-}

module Game.Halma.TelegramBot.View.Pretty
  ( prettyUser
  , prettyPlayer
  , prettyLocaleId
  , parsePrettyLocaleId
  , teamEmoji
  ) where

import Game.Halma.Board
import Game.Halma.TelegramBot.Model.Types

import Data.Monoid ((<>))
import qualified Data.Text as T
import qualified Web.Telegram.API.Bot as TG

prettyUser :: TG.User -> T.Text
prettyUser user =
  case TG.user_username user of
    Just username -> "@" <> username
    Nothing ->
      TG.user_first_name user <>
      maybe "" (" " <>) (TG.user_last_name user)

prettyPlayer :: Player -> T.Text
prettyPlayer player =
  case player of
    AIPlayer -> "AI"
    TelegramPlayer user -> prettyUser user

prettyLocaleId :: LocaleId -> T.Text
prettyLocaleId localeId = 
  case localeId of
    De -> "\127465\127466 de" -- german flag :de:
    En -> "\127468\127463 en" -- union jack :gb:

parsePrettyLocaleId :: T.Text -> Maybe LocaleId
parsePrettyLocaleId s =
  lookup (T.strip s) table
  where
    table = map (\locId -> (prettyLocaleId locId, locId)) [minBound..maxBound]
    
teamEmoji :: Team -> T.Text
teamEmoji dir =
  case dir of
    North     -> "\128309" -- :large_blue_circle: for blue
    Northeast -> "\128154" -- :green_heart: for green
    Northwest -> "\128156" -- :purple_heart: for purple
    South     -> "\128308" -- :red_circle: for red
    Southeast -> "\9899"   -- :medium_black_circle: for black
    Southwest -> "\128310" -- :large_orange_diamond: for orange