From c3a6d0657eb2987aa13b53419269274d848d9e0c Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Sun, 24 Jan 2016 16:10:48 +0000 Subject: Working printer config & debug printer --- server/src/Thermoprint/Server/Printer/Debug.hs | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 server/src/Thermoprint/Server/Printer/Debug.hs (limited to 'server/src/Thermoprint/Server/Printer') diff --git a/server/src/Thermoprint/Server/Printer/Debug.hs b/server/src/Thermoprint/Server/Printer/Debug.hs new file mode 100644 index 0000000..b8c1430 --- /dev/null +++ b/server/src/Thermoprint/Server/Printer/Debug.hs @@ -0,0 +1,39 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE RankNTypes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE FlexibleInstances #-} + +module Thermoprint.Server.Printer.Debug + ( Debug(..) + ) where + +import Control.Monad.IO.Class +import Control.Monad.Trans.Resource +import Control.Monad.Logger + +import Data.Text.Lazy (Text) +import qualified Data.Text.Lazy as TL + +import qualified Data.Text as T + +import Thermoprint.Printout +import Thermoprint.Server.Printer + +import Data.List (intersperse) +import Data.Foldable (toList) +import Data.Monoid + +data Debug = Debug + +instance Applicative m => IsPrinter Debug m where + printMethod _ = printMethod debugPrinter + +debugPrinter :: PrinterMethod +debugPrinter = PM $ (>> return Nothing) . $(logDebugS) "Printer.Debug" . T.pack . show . cotext' + +cotext' :: Printout -> Text +cotext' = mconcat . intersperse "\n\n" . map (mconcat . map cotext'' . toList) . toList + where + cotext'' (Cooked b) = cotext b + cotext'' (Raw _) = "[Raw]" -- cgit v1.2.3