aboutsummaryrefslogtreecommitdiff
path: root/server/src/Thermoprint/Server/Printer/Debug.hs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/Thermoprint/Server/Printer/Debug.hs')
-rw-r--r--server/src/Thermoprint/Server/Printer/Debug.hs39
1 files changed, 39 insertions, 0 deletions
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 @@
1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE RankNTypes #-}
3{-# LANGUAGE TemplateHaskell #-}
4{-# LANGUAGE MultiParamTypeClasses #-}
5{-# LANGUAGE FlexibleInstances #-}
6
7module Thermoprint.Server.Printer.Debug
8 ( Debug(..)
9 ) where
10
11import Control.Monad.IO.Class
12import Control.Monad.Trans.Resource
13import Control.Monad.Logger
14
15import Data.Text.Lazy (Text)
16import qualified Data.Text.Lazy as TL
17
18import qualified Data.Text as T
19
20import Thermoprint.Printout
21import Thermoprint.Server.Printer
22
23import Data.List (intersperse)
24import Data.Foldable (toList)
25import Data.Monoid
26
27data Debug = Debug
28
29instance Applicative m => IsPrinter Debug m where
30 printMethod _ = printMethod debugPrinter
31
32debugPrinter :: PrinterMethod
33debugPrinter = PM $ (>> return Nothing) . $(logDebugS) "Printer.Debug" . T.pack . show . cotext'
34
35cotext' :: Printout -> Text
36cotext' = mconcat . intersperse "\n\n" . map (mconcat . map cotext'' . toList) . toList
37 where
38 cotext'' (Cooked b) = cotext b
39 cotext'' (Raw _) = "[Raw]"