aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2016-02-14 22:28:16 +0000
committerGregor Kleen <gkleen@yggdrasil.li>2016-02-14 22:28:16 +0000
commit86e880f9787479e71a69d9a3c75064aa3d095a79 (patch)
treeb255b8be05e66d90068f13fdb100754aeafc7bdf
parent1276f480bb931f6b82e5c8f35e535e3b5eb2bd7a (diff)
downloadthermoprint-86e880f9787479e71a69d9a3c75064aa3d095a79.tar
thermoprint-86e880f9787479e71a69d9a3c75064aa3d095a79.tar.gz
thermoprint-86e880f9787479e71a69d9a3c75064aa3d095a79.tar.bz2
thermoprint-86e880f9787479e71a69d9a3c75064aa3d095a79.tar.xz
thermoprint-86e880f9787479e71a69d9a3c75064aa3d095a79.zip
Minor code cleanup
-rw-r--r--server/src/Thermoprint/Server/Printer/Generic.hs29
1 files changed, 19 insertions, 10 deletions
diff --git a/server/src/Thermoprint/Server/Printer/Generic.hs b/server/src/Thermoprint/Server/Printer/Generic.hs
index 33172ef..f37be21 100644
--- a/server/src/Thermoprint/Server/Printer/Generic.hs
+++ b/server/src/Thermoprint/Server/Printer/Generic.hs
@@ -40,7 +40,7 @@ import Control.Monad.Catch
40 40
41import Data.Foldable 41import Data.Foldable
42 42
43import Data.List (intersperse, genericReplicate, intercalate) 43import Data.List (genericReplicate, intercalate)
44 44
45import Data.Int (Int64) 45import Data.Int (Int64)
46 46
@@ -78,16 +78,25 @@ escSequence = mapM_ pushWord8 . (esc:)
78initialize :: Render 78initialize :: Render
79initialize = replicateM_ 2 $ escSequence [64] 79initialize = replicateM_ 2 $ escSequence [64]
80 80
81newl :: Lazy.ByteString
82newl = "\r\n"
83
84newls :: Integer -> Lazy.ByteString
85newls i = mconcat $ genericReplicate i newl
86
81finalize :: Render -- TODO: adjust this to produce proper padding 87finalize :: Render -- TODO: adjust this to produce proper padding
82finalize = encode' "\n\n\n" 88finalize = encode' $ newls 2
89
90intersperse :: b -> (a -> b) -> Seq a -> Seq b
91intersperse _ _ (viewl -> EmptyL) = Seq.empty
92intersperse _ f (viewl -> x :< (viewl -> EmptyL)) = Seq.singleton $ f x
93intersperse b f (viewl -> x :< xs) = f x <| b <| intersperse' b f xs
83 94
84intersperse' :: b -> (a -> b) -> Seq a -> Seq b 95intersperse' :: Monad m => m b -> (a -> m b) -> Seq a -> m ()
85intersperse' _ _ (viewl -> EmptyL) = Seq.empty 96intersperse' b f = sequence_ . intersperse b f
86intersperse' _ f (viewl -> x :< (viewl -> EmptyL)) = Seq.singleton $ f x
87intersperse' b f (viewl -> x :< xs) = f x <| b <| intersperse' b f xs
88 97
89render :: Printout -> Render 98render :: Printout -> Render
90render = sequence_ . intersperse' (encode' "\n\n") renderPar 99render = intersperse' (encode' newl) renderPar
91 100
92renderPar :: Paragraph -> Render 101renderPar :: Paragraph -> Render
93renderPar = mapM_ renderChunk 102renderPar = mapM_ renderChunk
@@ -96,6 +105,6 @@ renderPar = mapM_ renderChunk
96 renderChunk (Cooked block) = renderBlock block 105 renderChunk (Cooked block) = renderBlock block
97 106
98renderBlock :: Block -> Render 107renderBlock :: Block -> Render
99renderBlock (VSpace n) = encode' $ genericReplicate n '\n' 108renderBlock (VSpace n) = encode' $ newls n
100renderBlock (NewlSep xs) = sequence_ intercalate (encode' "\n") . map renderBlock . toList $ xs 109renderBlock (NewlSep xs) = intersperse' (encode' newl) . fmap renderBlock $ xs
101renderBlock (Line x) = undefined 110renderBlock (Line x) = undefined