@@ -26,7 +26,8 @@ module Text.PrettyPrint.Leijen.Extended
2626 -- See "System.Console.ANSI" for 'SGR' values to use beyond the colors
2727 -- provided.
2828 AnsiDoc , AnsiAnn (.. ), HasAnsiAnn (.. ),
29- hDisplayAnsi , displayAnsi , displayPlain , renderDefault ,
29+ -- hDisplayAnsi,
30+ displayAnsi , displayPlain , renderDefault ,
3031
3132 -- ** Color combinators
3233 black , red , green , yellow , blue , magenta , cyan , white ,
@@ -125,6 +126,7 @@ import qualified Data.Text.IO as T
125126import qualified Data.Text.Lazy as LT
126127import qualified Data.Text.Lazy.Builder as LTB
127128import Stack.Prelude hiding (Display (.. ))
129+ import Stack.Types.Runner (HasRunner )
128130import System.Console.ANSI (Color (.. ), ColorIntensity (.. ), ConsoleLayer (.. ), ConsoleIntensity (.. ), SGR (.. ), setSGRCode , hSupportsANSI )
129131import qualified Text.PrettyPrint.Annotated.Leijen as P
130132import Text.PrettyPrint.Annotated.Leijen hiding ((<>) , display )
@@ -178,27 +180,41 @@ instance HasAnsiAnn AnsiAnn where
178180instance HasAnsiAnn () where
179181 getAnsiAnn _ = mempty
180182
181- displayPlain :: Display a => Int -> a -> T. Text
182- displayPlain w = LT. toStrict . displayAnsiSimple . renderDefault w . fmap (const mempty ) . display
183+ displayPlain
184+ :: (Display a , HasRunner env , HasLogFunc env , MonadReader env m ,
185+ HasCallStack )
186+ => Int -> a -> m T. Text
187+ displayPlain w x = do
188+ t <- (displayAnsiSimple . renderDefault w . fmap (const mempty ) . display) x
189+ return $ LT. toStrict t
183190
184191-- TODO: tweak these settings more?
185192-- TODO: options for settings if this is released as a lib
186193
187194renderDefault :: Int -> Doc a -> SimpleDoc a
188195renderDefault = renderPretty 1
189196
190- displayAnsi :: (Display a , HasAnsiAnn (Ann a )) => Int -> a -> T. Text
191- displayAnsi w = LT. toStrict . displayAnsiSimple . renderDefault w . toAnsiDoc . display
197+ displayAnsi
198+ :: (Display a , HasAnsiAnn (Ann a ), HasRunner env , HasLogFunc env ,
199+ MonadReader env m , HasCallStack )
200+ => Int -> a -> m T. Text
201+ displayAnsi w x = do
202+ t <- (displayAnsiSimple . renderDefault w . toAnsiDoc . display) x
203+ return $ LT. toStrict t
192204
205+ {-
193206hDisplayAnsi
194207 :: (Display a, HasAnsiAnn (Ann a), MonadIO m)
195208 => Handle -> Int -> a -> m ()
196209hDisplayAnsi h w x = liftIO $ do
197210 useAnsi <- hSupportsANSI h
198211 T.hPutStr h $ if useAnsi then displayAnsi w x else displayPlain w x
212+ -}
199213
200- displayAnsiSimple :: SimpleDoc AnsiAnn -> LT. Text
201- displayAnsiSimple doc =
214+ displayAnsiSimple
215+ :: (HasRunner env , HasLogFunc env , MonadReader env m , HasCallStack )
216+ => SimpleDoc AnsiAnn -> m LT. Text
217+ displayAnsiSimple doc = return $
202218 LTB. toLazyText $ flip runReader mempty $ displayDecoratedWrap go doc
203219 where
204220 go (AnsiAnn sgrs) inner = do
0 commit comments