module Text
  ( Font(..)
  , FontSize(..)
  , getCombinedFont
  )
where

import           Data.List

-- | A font.
data Font
  = Arial
  | Verdana
  | TimesNewRoman
  | CourierNew
  | Serif
  | SansSerif
  -- | A html font family
  | Font String deriving (Show, Eq)

-- | A font size, given in points.
data FontSize = Size Int deriving (Show, Eq)

-- | Converts a `Font` to a html font family.
convertFont :: Font -> String
convertFont font = case (font) of
  Arial         -> "Arial"
  Verdana       -> "Verdana"
  TimesNewRoman -> "Times New Roman"
  CourierNew    -> "Courier New"
  Serif         -> "serif"
  SansSerif     -> "sans-serif"
  Font family   -> family

-- | Converts a `FontSize` to a html font size.
convertFontSize :: FontSize -> String
convertFontSize (Size size) = (show size) ++ "pt"

-- | Combines a `Font` and `FontSize` to return a html string representing them.
getCombinedFont :: Font -> FontSize -> String
getCombinedFont font fontSize =
  intercalate " " [(convertFontSize fontSize), (convertFont font)]