packages feed

tttool-1.1: src/Language.hs

{-# LANGUAGE OverloadedStrings #-}
module Language where

import Data.Aeson.Types
import Control.Monad
import Data.Text


data Language = En | De | Fr

defaultLanguage :: Language
defaultLanguage = En

ppLang :: Language -> String
ppLang En = "en"
ppLang De = "de"
ppLang Fr = "fr"

instance ToJSON Language where
    toJSON = toJSON . ppLang

instance FromJSON Language where
    parseJSON (String "en") = return En
    parseJSON (String "de") = return De
    parseJSON (String "fr") = return Fr
    parseJSON (String s) = fail $ "Unknown language \"" ++ unpack s ++ "\"."
    parseJSON _ = mzero