orgstat-0.1.0: src/OrgStat/Outputs/Block.hs
-- | Block output similar to default org reporting. This is stub
-- version which is to be improved later.
module OrgStat.Outputs.Block
( genBlockOutput
) where
import Universum
import qualified Data.Text as T
import OrgStat.Ast (Org, filterHasClock, orgTitle, orgTotalDuration,
traverseTree)
import OrgStat.Outputs.Types (BlockOutput (..), BlockParams)
import OrgStat.Util (timeF)
-- Stub. Used for debug mostly.
genBlockOutput :: BlockParams -> Org -> BlockOutput
genBlockOutput _ (filterHasClock -> o0) = do
BlockOutput $ T.unlines $ map formatter (o0 ^.. traverseTree)
where
-- todo implement it with boxes package instead, this is just as stub
cutLen = 50
margin = 2
genPad n = fromString (replicate n ' ')
formatter o =
let dur = orgTotalDuration o
titleRaw = T.take cutLen $ o ^. orgTitle
padding = cutLen - length titleRaw
titlePadded = titleRaw <> genPad padding
in mconcat [ titlePadded
, genPad margin <> " | " <> genPad margin
, timeF dur
]