{-# LANGUAGE MultiParamTypeClasses #-} -- | Names of this module are intentitionally kept too short. -- Use this module with quantifier. module Text.Authoring.Combinator.Writer where import Control.Lens (scribe) import Control.Monad.Writer import Data.Text (Text, pack) import Prelude import Safe (readMay) import Text.LaTeX.Base.Syntax (LaTeX) import qualified Text.LaTeX.Base.Commands as LTX import qualified Text.LaTeX.Base.Render as LTX import qualified Text.LaTeX.Base.Syntax as LTX import qualified Text.LaTeX.Base.Texy as LTX import Text.Authoring.Document -- | Scribe a LaTeX syntax into the target document. latex :: (MonadWriter t m, HasDocument t) => LaTeX -> m () latex = scribe latexSrc -- | Scribe a raw text (unescaped) into the target. raw :: (MonadWriter t m, HasDocument t) => Text -> m () raw = latex . LTX.raw -- | Scribe a raw text (escaped) into the target. esc :: (MonadWriter t m, HasDocument t) => Text -> m () esc = raw . LTX.protectText -- | Shows objects of type 'a' using Show interface, -- without escaping LaTeX special characters. rawShow :: (MonadWriter t m, HasDocument t, Show a) => a -> m () rawShow = raw . pack . Prelude.show -- | Shows objects of type 'a' using Show interface, -- escaping LaTeX special characters. escShow :: (MonadWriter t m, HasDocument t, Show a) => a -> m () escShow = esc . pack . Prelude.show