-- | Defines a Monad context for rendering PlantUML graphics to file.

module Capabilities.PlantUml (
  MonadPlantUml (drawPlantUmlSvg),
  ) where

import Control.Monad.Trans.Class        (MonadTrans (lift))
import Control.OutputCapable.Blocks.Generic (
  GenericReportT
  )
import Data.ByteString                  (ByteString)

class Monad m => MonadPlantUml m where
  drawPlantUmlSvg :: ByteString -> m ByteString

instance MonadPlantUml m => MonadPlantUml (GenericReportT l o m) where
  drawPlantUmlSvg :: ByteString -> GenericReportT l o m ByteString
drawPlantUmlSvg = m ByteString -> GenericReportT l o m ByteString
forall (m :: * -> *) a. Monad m => m a -> GenericReportT l o m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (m ByteString -> GenericReportT l o m ByteString)
-> (ByteString -> m ByteString)
-> ByteString
-> GenericReportT l o m ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> m ByteString
forall (m :: * -> *). MonadPlantUml m => ByteString -> m ByteString
drawPlantUmlSvg