{-# LANGUAGE OverloadedStrings #-} module View.Ad ( renderAds ) where import Data.List (intersperse) import Data.Maybe (fromMaybe) import qualified Data.Text as T import Model.Ad (Ad(..)) import qualified Model.Ad as Ad import Model.Resume (Resume(..)) import qualified Model.Resume as Resume import Model.Detail (Detail(..)) import qualified Model.Detail as Detail renderAds :: [Ad] -> T.Text renderAds = T.intercalate "\n\n" . map renderAd renderAd :: Ad -> T.Text renderAd ad = T.concat [ renderResume (Ad.resume ad) , "\n\n" , renderDetail (Ad.detail ad) ] renderResume :: Resume -> T.Text renderResume resume = let formatPrice price = T.concat [" - ", price] price = fromMaybe "" . fmap formatPrice . Resume.price $ resume titleLine = T.concat [Resume.name resume, price] in T.intercalate "\n" [titleLine, T.pack . Resume.url $ resume] renderDetail :: Detail -> T.Text renderDetail detail = fromMaybe "−" (Detail.description detail)