orgstat-0.0.1: src/OrgStat/Report/Class.hs
-- | Common things among reports
module OrgStat.Report.Class
( Report (..)
) where
import qualified Diagrams.Backend.SVG as DB
import qualified Diagrams.Prelude as D
import System.FilePath (replaceExtension, (</>))
import Universum
import OrgStat.Report.Types (SVGImageReport (..))
-- | Things that reporters output an what we can do with them.
class Report a where
-- | Writes report to the disk, given directory and filename.
writeReport :: (MonadIO m) => FilePath -> FilePath -> a -> m ()
instance Report SVGImageReport where
writeReport dir filename (SVGImage diagram) =
liftIO $ DB.renderSVG (replaceExtension (dir </> filename) "svg") size diagram
where
size = D.dims2D (D.width diagram) (D.height diagram)