# LANGUAGE CPP #

-- |
  Module       :  . Internal . Pretty
  Copyright    : ( c ) 2022 Composewell Technologies
--
-- License     : BSD-style
-- Maintainer  : 
-- Stability   : experimental
  Portability : GHC

module BenchShow.Internal.Pretty
    ( Doc
    , dullred
    , dullgreen
    , (<+>)
    , vcat
    , fill
    , indent
    , text
    , putDoc
    ) where

#ifndef NO_COLORS

import Text.PrettyPrint.ANSI.Leijen hiding ((<$>))

#else

type Doc = String

dullred :: Doc -> Doc
dullred = id

dullgreen :: Doc -> Doc
dullgreen = id

(<+>) :: Doc -> Doc -> Doc
(<+>) x y = x ++ " " ++ y

vcat :: [Doc] -> Doc
vcat = unlines

putDoc :: Doc -> IO ()
putDoc = putStrLn

fill :: Int -> Doc  -> Doc
fill i x =
    let len = length x
     in x ++ replicate (i - len) ' '

indent :: Int -> Doc -> Doc
indent i = unlines . map (replicate i ' ' ++) . lines

text :: String -> Doc
text = id

#endif

 |

 License     : BSD-style
 Maintainer  : 
 Stability   : experimental
# LANGUAGE CPP #

  Module       :  . Internal . Pretty
  Copyright    : ( c ) 2022 Composewell Technologies
  Portability : GHC

module BenchShow.Internal.Pretty
    ( Doc
    , dullred
    , dullgreen
    , (<+>)
    , vcat
    , fill
    , indent
    , text
    , putDoc
    ) where

#ifndef NO_COLORS

import Text.PrettyPrint.ANSI.Leijen hiding ((<$>))

#else

type Doc = String

dullred :: Doc -> Doc
dullred = id

dullgreen :: Doc -> Doc
dullgreen = id

(<+>) :: Doc -> Doc -> Doc
(<+>) x y = x ++ " " ++ y

vcat :: [Doc] -> Doc
vcat = unlines

putDoc :: Doc -> IO ()
putDoc = putStrLn

fill :: Int -> Doc  -> Doc
fill i x =
    let len = length x
     in x ++ replicate (i - len) ' '

indent :: Int -> Doc -> Doc
indent i = unlines . map (replicate i ' ' ++) . lines

text :: String -> Doc
text = id

#endif
