-- TODO add more langs
module Language.LaTeX.Builder.Babel
   (Lang, BabelOpt
   ,useBabel
   ,langName
   ,otherlanguage
   -- langs
   ,francais
   ,french
   -- last resort
   ,customLang
   ,customBabelOpt
   ,pkg
   ) where

import Data.String
import Language.LaTeX.Types
import qualified Language.LaTeX.Builder.Internal as BI

newtype BabelOpt = BabelOpt { babelOpt :: AnyItem }

newtype Lang = Lang { langName :: String }
  deriving (Show, Eq)

francais, french :: Lang
francais = Lang "francais"
french   = Lang "french"

customLang :: String -> Lang
customLang = Lang

customBabelOpt :: AnyItem -> BabelOpt
customBabelOpt = BabelOpt

pkg :: PackageName
pkg = BI.pkgName "babel"

useBabel :: Lang -> [BabelOpt] -> PreambleItem
useBabel lang opts = BI.usepackage (BI.latexItem (fromString (langName lang))
                                   : map babelOpt opts) pkg

-- | Switch locally to another language
otherlanguage :: Lang -> ParItem -> ParItem
otherlanguage lang = BI.parEnvironmentPar "otherlanguage" [BI.mandatoryLatexItem (fromString (langName lang))]