{-# LANGUAGE CPP #-} module Text.PrettyPrint.ANSI.Leijen {-# DEPRECATED "Compatibility module for users of ansi-wl-pprint - use \"Prettyprinter\" instead" #-} ( Doc, putDoc, hPutDoc, empty, char, text, (<>), nest, line, linebreak, group, softline, softbreak, hardline, flatAlt, renderSmart, align, hang, indent, encloseSep, list, tupled, semiBraces, (<+>), (<$>), (), (<$$>), (), hsep, vsep, fillSep, sep, hcat, vcat, fillCat, cat, punctuate, fill, fillBreak, enclose, squotes, dquotes, parens, angles, braces, brackets, lparen, rparen, langle, rangle, lbrace, rbrace, lbracket, rbracket, squote, dquote, semi, colon, comma, space, dot, backslash, equals, black, red, green, yellow, blue, magenta, cyan, white, dullblack, dullred, dullgreen, dullyellow, dullblue, dullmagenta, dullcyan, dullwhite, onblack, onred, ongreen, onyellow, onblue, onmagenta, oncyan, onwhite, ondullblack, ondullred, ondullgreen, ondullyellow, ondullblue, ondullmagenta, ondullcyan, ondullwhite, bold, debold, underline, deunderline, plain, string, int, integer, float, double, rational, Pretty(..), SimpleDoc, renderPretty, renderCompact, displayS, displayIO, bool, column, columns, nesting, width ) where #if MIN_VERSION_base(4,8,0) import Prelude hiding ((<$>)) #else import Prelude #endif import qualified Data.Text.Lazy as TL import System.IO import Prettyprinter (Pretty (..)) import qualified Prettyprinter as New import qualified Prettyprinter.Render.Terminal as NewT #if !(MIN_VERSION_base(4,11,0)) import Data.Semigroup #endif type Doc = New.Doc NewT.AnsiStyle type SimpleDoc = New.SimpleDocStream NewT.AnsiStyle putDoc :: Doc -> IO () putDoc = NewT.putDoc hPutDoc :: Handle -> Doc -> IO () hPutDoc = NewT.hPutDoc empty :: Doc empty = New.emptyDoc char :: Char -> Doc char = New.pretty text :: String -> Doc text = New.pretty nest :: Int -> Doc -> Doc nest = New.nest line :: Doc line = New.line linebreak :: Doc linebreak = New.flatAlt New.line mempty group :: Doc -> Doc group = New.group softline :: Doc softline = New.softline softbreak :: Doc softbreak = New.group linebreak hardline :: Doc hardline = New.hardline flatAlt :: Doc -> Doc -> Doc flatAlt = New.flatAlt renderSmart :: Float -> Int -> Doc -> SimpleDoc renderSmart ribbonFraction pageWidth = New.layoutSmart New.LayoutOptions { New.layoutPageWidth = New.AvailablePerLine pageWidth (realToFrac ribbonFraction) } align :: Doc -> Doc align = New.align hang :: Int -> Doc -> Doc hang = New.hang indent :: Int -> Doc -> Doc indent = New.indent encloseSep :: Doc -> Doc -> Doc -> [Doc] -> Doc encloseSep = New.encloseSep list :: [Doc] -> Doc list = New.list tupled :: [Doc] -> Doc tupled = New.tupled semiBraces :: [Doc] -> Doc semiBraces = New.encloseSep New.lbrace New.rbrace New.semi (<+>), (<$>), (), (<$$>), () :: Doc -> Doc -> Doc (<+>) = (New.<+>) (<$>) = \x y -> x <> New.line <> y () = \x y -> x <> softline <> y (<$$>) = \x y -> x <> linebreak <> y () = \x y -> x <> softbreak <> y hsep, vsep, fillSep, sep, hcat, vcat, fillCat, cat :: [Doc] -> Doc hsep = New.hsep vsep = New.vsep fillSep = New.fillSep sep = New.sep hcat = New.hcat vcat = New.vcat fillCat = New.fillCat cat = New.cat punctuate :: Doc -> [Doc] -> [Doc] punctuate = New.punctuate fill :: Int -> Doc -> Doc fill = New.fill fillBreak :: Int -> Doc -> Doc fillBreak = New.fillBreak enclose :: Doc -> Doc -> Doc -> Doc enclose = New.enclose squotes, dquotes, parens, angles, braces, brackets :: Doc -> Doc squotes = New.squotes dquotes = New.dquotes parens = New.parens angles = New.angles braces = New.braces brackets = New.brackets lparen, rparen, langle, rangle, lbrace, rbrace, lbracket, rbracket, squote, dquote, semi, colon, comma, space, dot, backslash, equals :: Doc lparen = New.lparen rparen = New.rparen langle = New.langle rangle = New.rangle lbrace = New.lbrace rbrace = New.rbrace lbracket = New.lbracket rbracket = New.rbracket squote = New.squote dquote = New.dquote semi = New.semi colon = New.colon comma = New.comma space = New.space dot = New.dot backslash = New.backslash equals = New.equals black, red, green, yellow, blue, magenta, cyan, white, dullblack, dullred, dullgreen, dullyellow, dullblue, dullmagenta, dullcyan, dullwhite, onblack, onred, ongreen, onyellow, onblue, onmagenta, oncyan, onwhite, ondullblack, ondullred, ondullgreen, ondullyellow, ondullblue, ondullmagenta, ondullcyan, ondullwhite, bold, debold, underline, deunderline :: Doc -> Doc black = New.annotate (NewT.color NewT.Black) red = New.annotate (NewT.color NewT.Red) green = New.annotate (NewT.color NewT.Green) yellow = New.annotate (NewT.color NewT.Yellow) blue = New.annotate (NewT.color NewT.Blue) magenta = New.annotate (NewT.color NewT.Magenta) cyan = New.annotate (NewT.color NewT.Cyan) white = New.annotate (NewT.color NewT.White) dullblack = New.annotate (NewT.colorDull NewT.Black) dullred = New.annotate (NewT.colorDull NewT.Red) dullgreen = New.annotate (NewT.colorDull NewT.Green) dullyellow = New.annotate (NewT.colorDull NewT.Yellow) dullblue = New.annotate (NewT.colorDull NewT.Blue) dullmagenta = New.annotate (NewT.colorDull NewT.Magenta) dullcyan = New.annotate (NewT.colorDull NewT.Cyan) dullwhite = New.annotate (NewT.colorDull NewT.White) onblack = New.annotate (NewT.bgColor NewT.Black) onred = New.annotate (NewT.bgColor NewT.Red) ongreen = New.annotate (NewT.bgColor NewT.Green) onyellow = New.annotate (NewT.bgColor NewT.Yellow) onblue = New.annotate (NewT.bgColor NewT.Blue) onmagenta = New.annotate (NewT.bgColor NewT.Magenta) oncyan = New.annotate (NewT.bgColor NewT.Cyan) onwhite = New.annotate (NewT.bgColor NewT.White) ondullblack = New.annotate (NewT.bgColorDull NewT.Black) ondullred = New.annotate (NewT.bgColorDull NewT.Red) ondullgreen = New.annotate (NewT.bgColorDull NewT.Green) ondullyellow = New.annotate (NewT.bgColorDull NewT.Yellow) ondullblue = New.annotate (NewT.bgColorDull NewT.Blue) ondullmagenta = New.annotate (NewT.bgColorDull NewT.Magenta) ondullcyan = New.annotate (NewT.bgColorDull NewT.Cyan) ondullwhite = New.annotate (NewT.bgColorDull NewT.White) bold = New.annotate NewT.bold debold = id {-# WARNING debold "Debold does not do anything" #-} underline = New.annotate NewT.underlined deunderline = id {-# WARNING deunderline "Debold does not do anything" #-} plain :: Doc -> Doc plain = New.unAnnotate string :: String -> Doc string = New.pretty int :: Int -> Doc int = New.pretty integer :: Integer -> Doc integer = New.pretty float :: Float -> Doc float = New.pretty double :: Double -> Doc double = New.pretty rational :: Rational -> Doc rational = New.pretty . show renderPretty :: Float -> Int -> Doc -> SimpleDoc renderPretty ribbonFraction pageWidth = New.layoutSmart New.LayoutOptions { New.layoutPageWidth = New.AvailablePerLine pageWidth (realToFrac ribbonFraction) } renderCompact :: Doc -> SimpleDoc renderCompact = New.layoutCompact displayS :: SimpleDoc -> ShowS displayS sdoc = let rendered = NewT.renderLazy sdoc in (TL.unpack rendered ++) displayIO :: Handle -> SimpleDoc -> IO () displayIO = NewT.renderIO bool :: Bool -> Doc bool = New.pretty column :: (Int -> Doc) -> Doc column = New.column columns :: (Maybe Int -> Doc) -> Doc columns f = New.pageWidth (f . toMaybeInt) where toMaybeInt :: New.PageWidth -> Maybe Int toMaybeInt (New.AvailablePerLine cpl _) = Just cpl toMaybeInt New.Unbounded = Nothing nesting :: (Int -> Doc) -> Doc nesting = New.nesting width :: Doc -> (Int -> Doc) -> Doc width = New.width