trifecta-2.1.2: src/Text/Trifecta/Util/Pretty.hs
-----------------------------------------------------------------------------
-- |
-- Copyright : (C) 2011-2019 Edward Kmett
-- License : BSD-style (see the file LICENSE)
--
-- Maintainer : Edward Kmett <ekmett@gmail.com>
-- Stability : experimental
-- Portability : non-portable
--
-- Utility functions to augment the prettyprinter library's interface.
----------------------------------------------------------------------------
module Text.Trifecta.Util.Pretty
( AnsiStyle
, renderIO
-- * Rendering
, char
-- * Styles
, bold
, debold
, underlined
, deunderline
-- * Compatibility shims
, renderPretty
, columns
) where
import Prettyprinter
import Prettyprinter.Render.Terminal
import Prettyprinter.Render.Terminal.Internal (ansiBold, ansiUnderlining)
char :: Char -> Doc a
char = pretty
renderPretty :: Double -> Int -> Doc AnsiStyle -> SimpleDocStream AnsiStyle
renderPretty ribbonFraction page
= layoutSmart LayoutOptions { layoutPageWidth = AvailablePerLine page ribbonFraction }
debold, deunderline :: AnsiStyle
debold = mempty { ansiBold = Nothing }
deunderline = mempty { ansiUnderlining = Nothing}
columns :: (Maybe Int -> Doc AnsiStyle) -> Doc AnsiStyle
columns f = pageWidth (f . toMaybeInt) where
toMaybeInt (AvailablePerLine cpl _) = Just cpl
toMaybeInt Unbounded = Nothing