@@ -51,14 +51,19 @@ toSGR color cons = case color of
51
51
, SetBlinkSpeed (blink cons)
52
52
]
53
53
54
+ reset :: ColorSetting -> IO ()
55
+ reset color = case color of
56
+ NoColor -> pure ()
57
+ UseColor -> setSGR [Reset ]
58
+
54
59
renderNode :: NodeType -> ColorSetting -> Handle -> IO ()
55
- renderNode nt@ (TEXT txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle (txt <> " \n " ) >> setSGR [ Reset ]
56
- renderNode nt@ (HTML_BLOCK txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle txt >> setSGR [ Reset ]
57
- renderNode nt@ (CODE_BLOCK _ txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle txt >> setSGR [ Reset ]
58
- renderNode nt@ (HTML_INLINE txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle txt >> setSGR [ Reset ]
60
+ renderNode nt@ (TEXT txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle (txt <> " \n " ) >> reset color
61
+ renderNode nt@ (HTML_BLOCK txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle txt >> reset color
62
+ renderNode nt@ (CODE_BLOCK _ txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle txt >> reset color
63
+ renderNode nt@ (HTML_INLINE txt) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle txt >> reset color
59
64
renderNode (CODE txt) color handle = renderCode color txt handle
60
- renderNode nt@ LINEBREAK color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle " " >> setSGR [ Reset ]
61
- renderNode nt@ (LIST _) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle " " >> TIO. hPutStr handle " - " >> setSGR [ Reset ]
65
+ renderNode nt@ LINEBREAK color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle " " >> reset color
66
+ renderNode nt@ (LIST _) color handle = changeConsoleSetting color nt >> TIO. hPutStrLn handle " " >> TIO. hPutStr handle " - " >> reset color
62
67
renderNode _ _ _ = return ()
63
68
64
69
renderCode :: ColorSetting -> Text -> Handle -> IO ()
@@ -67,9 +72,9 @@ renderCode color txt handle = do
67
72
case parseOnly codeParser txt of
68
73
Right xs -> do
69
74
forM_ xs $ \ case
70
- Left x -> changeConsoleSetting color (CODE txt) >> TIO. hPutStr handle x >> setSGR [ Reset ]
75
+ Left x -> changeConsoleSetting color (CODE txt) >> TIO. hPutStr handle x >> reset color
71
76
Right x -> TIO. hPutStr handle x
72
- Left _ -> changeConsoleSetting color (CODE txt) >> TIO. hPutStr handle txt >> setSGR [ Reset ]
77
+ Left _ -> changeConsoleSetting color (CODE txt) >> TIO. hPutStr handle txt >> reset color
73
78
TIO. hPutStr handle (" \n " )
74
79
75
80
changeConsoleSetting :: ColorSetting -> NodeType -> IO ()
@@ -107,7 +112,7 @@ handleNode (Node _ ntype xs) handle color = do
107
112
(\ (Node _ ntype' ns) ->
108
113
renderNode ntype' color handle >> mapM_ (\ n -> handleNode n handle color) ns)
109
114
xs
110
- setSGR [ Reset ]
115
+ reset color
111
116
112
117
parsePage :: FilePath -> IO Node
113
118
parsePage fname = do
0 commit comments