module Data.Aviation.Casr.Logbook.Hours ( Hours(..) , zeroHours , addHours ) where import Data.Aviation.Casr.Logbook.Printer.Markdown -- abstract data Hours = Hours Int -- full Int -- partial deriving (Eq, Ord, Show) zeroHours :: Hours zeroHours = Hours 0 0 addHours :: Hours -> Hours -> Hours Hours f1 p1 `addHours` Hours f2 p2 = let (h, q) = divMod (p1 + p2) 10 in Hours (f1 + f2 + h) q instance Monoid Hours where mempty = zeroHours mappend = addHours instance Markdown Hours where markdown (Hours t p) = "* Hours: **`" ++ show t ++ "." ++ show p ++ "`**\n"