hid-examples-0.1.0.0: stockquotes/StatReport.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
module StatReport (statReport, showStatEntryValue) where
import Data.Fixed (showFixed)
import Data.Text (Text)
import Fmt
import QuoteData
import Statistics
instance Buildable Statistic where
build Mean = "Mean"
build Min = "Minimum"
build Max = "Maximum"
build Days = "Days between Min/Max"
showStatEntryValue :: StatEntry -> String
showStatEntryValue StatEntry {..} = showFixed (removeTrailing stat qfield) value
where
removeTrailing Days _ = True
removeTrailing Min Volume = True
removeTrailing Max Volume = True
removeTrailing _ _ = False
instance Buildable StatEntry where
build se@StatEntry {..} = ""+|stat|+": "+|showStatEntryValue se|+""
instance Buildable StatQFieldData where
build (qf, stats) = nameF ("Statistics for " +||qf||+"") $ unlinesF stats
statReport :: StatInfo -> Text
statReport = fmt . unlinesF