packages feed

translate-cli-0.1.0.0: src/Model.hs

{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}
module Model(RestResponse(..), Translation(..), Phrase(..), toPhrases) where

import Data.Text (Text)
import GHC.Generics (Generic)
import Data.Maybe


data Phrase = Phrase { text :: String
                     , language :: String
                     } deriving (Generic, Show)

data Translation = Translation { phrase :: Maybe Phrase
                               } deriving (Generic, Show)

data RestResponse = RestResponse { result :: String
                                 , tuc :: [Translation]
                                 } deriving (Generic, Show)

toPhrases :: RestResponse -> [String]
toPhrases = fmap formatPhrase . getPhrases . tuc

getPhrases :: [Translation] -> [Phrase]
getPhrases = catMaybes . fmap phrase

formatPhrase :: Phrase -> String
formatPhrase (Phrase text lang) = "[" ++ lang ++ "] " ++ text