| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Futhark.Util.Pretty
Description
A re-export of the prettyprinting library, along with some convenience functions.
Synopsis
- prettyTuple :: Pretty a => [a] -> Text
- prettyTupleLines :: Pretty a => [a] -> Text
- prettyString :: Pretty a => a -> String
- prettyStringOneLine :: Pretty a => a -> String
- prettyText :: Pretty a => a -> Text
- prettyTextOneLine :: Pretty a => a -> Text
- docText :: Doc a -> Text
- docTextForHandle :: Handle -> Doc AnsiStyle -> IO Text
- docString :: Doc a -> String
- putDoc :: Doc AnsiStyle -> IO ()
- hPutDoc :: Handle -> Doc AnsiStyle -> IO ()
- putDocLn :: Doc AnsiStyle -> IO ()
- hPutDocLn :: Handle -> Doc AnsiStyle -> IO ()
- class Pretty a where
- pretty :: a -> Doc ann
- prettyList :: [a] -> Doc ann
- list :: [Doc ann] -> Doc ann
- comma :: Doc ann
- colon :: Doc ann
- (<>) :: Semigroup a => a -> a -> a
- fill :: Int -> Doc ann -> Doc ann
- parens :: Doc ann -> Doc ann
- data SimpleDocStream ann
- = SFail
- | SEmpty
- | SChar !Char (SimpleDocStream ann)
- | SText !Int !Text (SimpleDocStream ann)
- | SLine !Int (SimpleDocStream ann)
- | SAnnPush ann (SimpleDocStream ann)
- | SAnnPop (SimpleDocStream ann)
- group :: Doc ann -> Doc ann
- (<+>) :: Doc ann -> Doc ann -> Doc ann
- align :: Doc ann -> Doc ann
- width :: Doc ann -> (Int -> Doc ann) -> Doc ann
- data FusionDepth
- data Doc ann
- dot :: Doc ann
- equals :: Doc ann
- semi :: Doc ann
- space :: Doc ann
- squote :: Doc ann
- dquote :: Doc ann
- langle :: Doc ann
- rangle :: Doc ann
- lbrace :: Doc ann
- rbrace :: Doc ann
- lbracket :: Doc ann
- rbracket :: Doc ann
- lparen :: Doc ann
- rparen :: Doc ann
- line :: Doc ann
- softline :: Doc ann
- enclose :: Doc ann -> Doc ann -> Doc ann -> Doc ann
- squotes :: Doc ann -> Doc ann
- dquotes :: Doc ann -> Doc ann
- angles :: Doc ann -> Doc ann
- braces :: Doc ann -> Doc ann
- brackets :: Doc ann -> Doc ann
- cat :: [Doc ann] -> Doc ann
- sep :: [Doc ann] -> Doc ann
- punctuate :: Doc ann -> [Doc ann] -> [Doc ann]
- hang :: Int -> Doc ann -> Doc ann
- indent :: Int -> Doc ann -> Doc ann
- nest :: Int -> Doc ann -> Doc ann
- column :: (Int -> Doc ann) -> Doc ann
- nesting :: (Int -> Doc ann) -> Doc ann
- annotate :: ann -> Doc ann -> Doc ann
- hcat :: [Doc ann] -> Doc ann
- hsep :: [Doc ann] -> Doc ann
- vcat :: [Doc ann] -> Doc ann
- newtype LayoutOptions = LayoutOptions {}
- data PageWidth
- viaShow :: Show a => a -> Doc ann
- unsafeViaShow :: Show a => a -> Doc ann
- emptyDoc :: Doc ann
- line' :: Doc ann
- softline' :: Doc ann
- hardline :: Doc ann
- flatAlt :: Doc ann -> Doc ann -> Doc ann
- encloseSep :: Doc ann -> Doc ann -> Doc ann -> [Doc ann] -> Doc ann
- tupled :: [Doc ann] -> Doc ann
- concatWith :: Foldable t => (Doc ann -> Doc ann -> Doc ann) -> t (Doc ann) -> Doc ann
- vsep :: [Doc ann] -> Doc ann
- fillSep :: [Doc ann] -> Doc ann
- fillCat :: [Doc ann] -> Doc ann
- pageWidth :: (PageWidth -> Doc ann) -> Doc ann
- fillBreak :: Int -> Doc ann -> Doc ann
- plural :: (Num amount, Eq amount) => doc -> doc -> amount -> doc
- surround :: Doc ann -> Doc ann -> Doc ann -> Doc ann
- unAnnotate :: Doc ann -> Doc xxx
- reAnnotate :: (ann -> ann') -> Doc ann -> Doc ann'
- alterAnnotations :: (ann -> [ann']) -> Doc ann -> Doc ann'
- unAnnotateS :: SimpleDocStream ann -> SimpleDocStream xxx
- reAnnotateS :: (ann -> ann') -> SimpleDocStream ann -> SimpleDocStream ann'
- alterAnnotationsS :: (ann -> Maybe ann') -> SimpleDocStream ann -> SimpleDocStream ann'
- fuse :: FusionDepth -> Doc ann -> Doc ann
- removeTrailingWhitespace :: SimpleDocStream ann -> SimpleDocStream ann
- defaultLayoutOptions :: LayoutOptions
- layoutPretty :: LayoutOptions -> Doc ann -> SimpleDocStream ann
- layoutSmart :: LayoutOptions -> Doc ann -> SimpleDocStream ann
- layoutCompact :: Doc ann1 -> SimpleDocStream ann2
- slash :: Doc ann
- backslash :: Doc ann
- pipe :: Doc ann
- comma :: Doc ann
- colon :: Doc ann
- parens :: Doc ann -> Doc ann
- dot :: Doc ann
- equals :: Doc ann
- semi :: Doc ann
- space :: Doc ann
- squote :: Doc ann
- dquote :: Doc ann
- langle :: Doc ann
- rangle :: Doc ann
- lbrace :: Doc ann
- rbrace :: Doc ann
- lbracket :: Doc ann
- rbracket :: Doc ann
- lparen :: Doc ann
- rparen :: Doc ann
- squotes :: Doc ann -> Doc ann
- dquotes :: Doc ann -> Doc ann
- angles :: Doc ann -> Doc ann
- braces :: Doc ann -> Doc ann
- brackets :: Doc ann -> Doc ann
- slash :: Doc ann
- backslash :: Doc ann
- pipe :: Doc ann
- data Color
- bold :: AnsiStyle
- color :: Color -> AnsiStyle
- data AnsiStyle
- bgColor :: Color -> AnsiStyle
- colorDull :: Color -> AnsiStyle
- bgColorDull :: Color -> AnsiStyle
- italicized :: AnsiStyle
- underlined :: AnsiStyle
- apply :: [Doc a] -> Doc a
- oneLine :: Doc a -> Doc a
- annot :: [Doc a] -> Doc a -> Doc a
- nestedBlock :: Doc a -> Doc a -> Doc a -> Doc a
- textwrap :: Text -> Doc a
- shorten :: Doc a -> Doc b
- commastack :: [Doc a] -> Doc a
- commasep :: [Doc a] -> Doc a
- semistack :: [Doc a] -> Doc a
- stack :: [Doc a] -> Doc a
- parensIf :: Bool -> Doc a -> Doc a
- ppTuple' :: [Doc a] -> Doc a
- ppTupleLines' :: [Doc a] -> Doc a
- (</>) :: Doc a -> Doc a -> Doc a
Rendering to texts
prettyTuple :: Pretty a => [a] -> Text Source #
Prettyprint a list enclosed in curly braces.
prettyTupleLines :: Pretty a => [a] -> Text Source #
Like prettyTuple, but put a linebreak after every element.
prettyString :: Pretty a => a -> String Source #
Prettyprint a value to a String, appropriately wrapped.
prettyStringOneLine :: Pretty a => a -> String Source #
Prettyprint a value to a String on a single line.
docText :: Doc a -> Text Source #
Convert a Doc to text. This ignores any annotations (i.e. it
will be non-coloured output).
docTextForHandle :: Handle -> Doc AnsiStyle -> IO Text Source #
Produce text suitable for printing on the given handle. This mostly means stripping any control characters if the handle is not a terminal.
Rendering to terminal
hPutDoc :: Handle -> Doc AnsiStyle -> IO () Source #
Print a doc with styling to the given file; stripping colors if the file does not seem to support such things.
Building blocks
Minimal complete definition
Instances
(<>) :: Semigroup a => a -> a -> a infixr 6 Source #
An associative operation.
Examples
>>>[1,2,3] <> [4,5,6][1,2,3,4,5,6]
>>>Just [1, 2, 3] <> Just [4, 5, 6]Just [1,2,3,4,5,6]
>>>putStr "Hello, " <> putStrLn "World!"Hello, World!
data SimpleDocStream ann #
Constructors
| SFail | |
| SEmpty | |
| SChar !Char (SimpleDocStream ann) | |
| SText !Int !Text (SimpleDocStream ann) | |
| SLine !Int (SimpleDocStream ann) | |
| SAnnPush ann (SimpleDocStream ann) | |
| SAnnPop (SimpleDocStream ann) |
Instances
data FusionDepth #
Instances
| Show FusionDepth | |
Defined in Prettyprinter.Internal | |
| Eq FusionDepth | |
Defined in Prettyprinter.Internal Methods (==) :: FusionDepth -> FusionDepth -> Bool Source # (/=) :: FusionDepth -> FusionDepth -> Bool Source # | |
| Ord FusionDepth | |
Defined in Prettyprinter.Internal Methods compare :: FusionDepth -> FusionDepth -> Ordering Source # (<) :: FusionDepth -> FusionDepth -> Bool Source # (<=) :: FusionDepth -> FusionDepth -> Bool Source # (>) :: FusionDepth -> FusionDepth -> Bool Source # (>=) :: FusionDepth -> FusionDepth -> Bool Source # max :: FusionDepth -> FusionDepth -> FusionDepth Source # min :: FusionDepth -> FusionDepth -> FusionDepth Source # | |
Instances
| Functor Doc | |||||
| Monoid Fmt Source # | |||||
| Semigroup Fmt Source # | |||||
| IsString Fmt Source # | |||||
Defined in Futhark.Fmt.Monad Methods fromString :: String -> Fmt Source # | |||||
| Monoid (Doc ann) | |||||
| Semigroup (Doc ann) | |||||
| IsString (Doc ann) | |||||
Defined in Prettyprinter.Internal Methods fromString :: String -> Doc ann Source # | |||||
| Generic (Doc ann) | |||||
Defined in Prettyprinter.Internal Associated Types
| |||||
| Show (Doc ann) | |||||
| type Rep (Doc ann) | |||||
Defined in Prettyprinter.Internal type Rep (Doc ann) = D1 ('MetaData "Doc" "Prettyprinter.Internal" "prettyprinter-1.7.1-K35zp2YrYoHG4xnuHsN7jV" 'False) (((C1 ('MetaCons "Fail" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Empty" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Char" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Char)))) :+: (C1 ('MetaCons "Text" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: (C1 ('MetaCons "Line" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FlatAlt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann)))))) :+: ((C1 ('MetaCons "Cat" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann))) :+: (C1 ('MetaCons "Nest" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann))) :+: C1 ('MetaCons "Union" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann))))) :+: ((C1 ('MetaCons "Column" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Int -> Doc ann))) :+: C1 ('MetaCons "WithPageWidth" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PageWidth -> Doc ann)))) :+: (C1 ('MetaCons "Nesting" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Int -> Doc ann))) :+: C1 ('MetaCons "Annotated" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Doc ann))))))) | |||||
newtype LayoutOptions #
Constructors
| LayoutOptions | |
Fields | |
Instances
| Show LayoutOptions | |
Defined in Prettyprinter.Internal | |
| Eq LayoutOptions | |
Defined in Prettyprinter.Internal Methods (==) :: LayoutOptions -> LayoutOptions -> Bool Source # (/=) :: LayoutOptions -> LayoutOptions -> Bool Source # | |
| Ord LayoutOptions | |
Defined in Prettyprinter.Internal Methods compare :: LayoutOptions -> LayoutOptions -> Ordering Source # (<) :: LayoutOptions -> LayoutOptions -> Bool Source # (<=) :: LayoutOptions -> LayoutOptions -> Bool Source # (>) :: LayoutOptions -> LayoutOptions -> Bool Source # (>=) :: LayoutOptions -> LayoutOptions -> Bool Source # max :: LayoutOptions -> LayoutOptions -> LayoutOptions Source # min :: LayoutOptions -> LayoutOptions -> LayoutOptions Source # | |
Constructors
| AvailablePerLine !Int !Double | |
| Unbounded |
Instances
| Show PageWidth | |
| Eq PageWidth | |
| Ord PageWidth | |
Defined in Prettyprinter.Internal | |
unsafeViaShow :: Show a => a -> Doc ann #
unAnnotate :: Doc ann -> Doc xxx #
reAnnotate :: (ann -> ann') -> Doc ann -> Doc ann' #
alterAnnotations :: (ann -> [ann']) -> Doc ann -> Doc ann' #
unAnnotateS :: SimpleDocStream ann -> SimpleDocStream xxx #
reAnnotateS :: (ann -> ann') -> SimpleDocStream ann -> SimpleDocStream ann' #
alterAnnotationsS :: (ann -> Maybe ann') -> SimpleDocStream ann -> SimpleDocStream ann' #
fuse :: FusionDepth -> Doc ann -> Doc ann #
removeTrailingWhitespace :: SimpleDocStream ann -> SimpleDocStream ann #
layoutPretty :: LayoutOptions -> Doc ann -> SimpleDocStream ann #
layoutSmart :: LayoutOptions -> Doc ann -> SimpleDocStream ann #
layoutCompact :: Doc ann1 -> SimpleDocStream ann2 #
The 8 ANSI terminal colors.
Render the annotated document in a certain style. Styles not set in the annotation will use the style of the surrounding document, or the terminal’s default if none has been set yet.
style =colorGreen<>boldstyledDoc =annotatestyle "hello world"
Instances
| Monoid Fmt Source # | |
| Monoid AnsiStyle |
|
| Semigroup Fmt Source # | |
| Semigroup AnsiStyle | Keep the first decision for each of foreground color, background color, boldness, italication, and underlining. If a certain style is not set, the terminal’s default will be used. Example:
is red because the first color wins, and not bold because (or if) that’s the terminal’s default. |
| IsString Fmt Source # | |
Defined in Futhark.Fmt.Monad Methods fromString :: String -> Fmt Source # | |
| Show AnsiStyle | |
| Eq AnsiStyle | |
| Ord AnsiStyle | |
Defined in Prettyprinter.Render.Terminal.Internal | |
bgColorDull :: Color -> AnsiStyle Source #
Style the background with a dull color.
italicized :: AnsiStyle Source #
Render in italics.
underlined :: AnsiStyle Source #
Render underlined.
apply :: [Doc a] -> Doc a Source #
The document separates apply dsds with commas and encloses them with
parentheses.
oneLine :: Doc a -> Doc a Source #
Make sure that the given document is printed on just a single line.
nestedBlock :: Doc a -> Doc a -> Doc a -> Doc a Source #
Surround the given document with enclosers and add linebreaks and indents.
textwrap :: Text -> Doc a Source #
Splits the string into words and permits line breaks between all of them.
shorten :: Doc a -> Doc b Source #
Prettyprint on a single line up to at most some appropriate number of characters, with trailing ... if necessary. Used for error messages.
parensIf :: Bool -> Doc a -> Doc a Source #
The document encloses the document parensIf p dd in parenthesis if
p is True, and otherwise yields just d.
ppTupleLines' :: [Doc a] -> Doc a Source #