| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Silkscreen
Description
Silkscreen is a library of pretty-printing transformers built around the prettyprinter package. This module defines the core Printer abstraction and a few instances.
More documentation can be found in Prettyprinter.
Synopsis
- class Monoid p => Printer p where
- type Ann p
- liftDoc0 :: Doc (Ann p) -> p
- liftDoc1 :: (Doc (Ann p) -> Doc (Ann p)) -> p -> p
- liftDoc2 :: (Doc (Ann p) -> Doc (Ann p) -> Doc (Ann p)) -> p -> p -> p
- enclosing :: p -> p -> p -> p
- squotes :: p -> p
- dquotes :: p -> p
- parens :: p -> p
- brackets :: p -> p
- braces :: p -> p
- angles :: p -> p
- column :: (Int -> p) -> p
- nesting :: (Int -> p) -> p
- pageWidth :: (PageWidth -> p) -> p
- pretty :: (Printer p, Pretty t) => t -> p
- prettyList :: (Printer p, Pretty t) => [t] -> p
- annotate :: Printer p => Ann p -> p -> p
- group :: Printer p => p -> p
- flatAlt :: Printer p => p -> p -> p
- align :: Printer p => p -> p
- hang :: Printer p => Int -> p -> p
- indent :: Printer p => Int -> p -> p
- nest :: Printer p => Int -> p -> p
- concatWith :: (Monoid p, Foldable t) => (p -> p -> p) -> t p -> p
- hsep :: Printer p => [p] -> p
- vsep :: Printer p => [p] -> p
- fillSep :: Printer p => [p] -> p
- sep :: Printer p => [p] -> p
- hcat :: Printer p => [p] -> p
- vcat :: Printer p => [p] -> p
- fillCat :: Printer p => [p] -> p
- cat :: Printer p => [p] -> p
- punctuate :: Printer p => p -> [p] -> [p]
- width :: Printer p => p -> (Int -> p) -> p
- fill :: Printer p => Int -> p -> p
- fillBreak :: Printer p => Int -> p -> p
- plural :: (Num amount, Eq amount) => doc -> doc -> amount -> doc
- enclose :: Printer p => p -> p -> p -> p
- encloseSep :: Printer p => p -> p -> p -> [p] -> p
- list :: Printer p => [p] -> p
- tupled :: Printer p => [p] -> p
- surround :: Printer p => p -> p -> p -> p
- (<+>) :: Printer p => p -> p -> p
- (</>) :: Printer p => p -> p -> p
- parensIf :: Printer p => Bool -> p -> p
- space :: Printer p => p
- line :: Printer p => p
- line' :: Printer p => p
- softline :: Printer p => p
- softline' :: Printer p => p
- hardline :: Printer p => p
- lparen :: Printer p => p
- rparen :: Printer p => p
- lbracket :: Printer p => p
- rbracket :: Printer p => p
- lbrace :: Printer p => p
- rbrace :: Printer p => p
- langle :: Printer p => p
- rangle :: Printer p => p
- squote :: Printer p => p
- dquote :: Printer p => p
- semi :: Printer p => p
- comma :: Printer p => p
- colon :: Printer p => p
- dot :: Printer p => p
- slash :: Printer p => p
- backslash :: Printer p => p
- equals :: Printer p => p
- pipe :: Printer p => p
- class Pretty a
- data PageWidth
Printing
class Monoid p => Printer p where Source #
A Printer abstracts pretty-printing to allow the composition of behaviours such as e.g. rainbow parentheses, precedence handling, and so forth.
Associated Types
The type of annotations supported by the printer.
We provide this as a type family instead of defining Printer over kind Type -> Type in order to allow instances to constrain annotations.
Methods
liftDoc0 :: Doc (Ann p) -> p Source #
Lift a Doc to a Printer.
liftDoc1 :: (Doc (Ann p) -> Doc (Ann p)) -> p -> p Source #
Lift a unary function on Doc to a Printer.
liftDoc2 :: (Doc (Ann p) -> Doc (Ann p) -> Doc (Ann p)) -> p -> p -> p Source #
Lift a binary function on Doc to a Printer.
enclosing :: p -> p -> p -> p Source #
wraps enclosing l r xx in l and r.
Distinct from enclose (which is not overloaded) so that enclose remains available as a convenience for appending documents without whatever extra semantics are implied by any particular Printer (rainbow precedences, resetting precedence, etc.).
Overloadable to support e.g. rainbow parentheses.
Wrap the argument in single quotes.
The default definition is given in terms of enclosing. Overloadable to support e.g. rainbow quotes (or disabling of same, if desired).
Wrap the argument in double quotes.
The default definition is given in terms of enclosing. Overloadable to support e.g. rainbow quotes (or disabling of same, if desired).
Parenthesize the argument.
The default definition is given in terms of enclosing. Overloadable to support e.g. rainbow parentheses (or disabling of same, if desired).
Wrap the argument in brackets.
The default definition is given in terms of enclosing. Overloadable to support e.g. rainbow brackets (or disabling of same, if desired).
Wrap the argument in braces.
The default definition is given in terms of enclosing. Overloadable to support e.g. rainbow braces (or disabling of same, if desired).
Wrap the argument in angle brackets.
The default definition is given in terms of enclosing. Overloadable to support e.g. rainbow angle brackets (or disabling of same, if desired).
column :: (Int -> p) -> p Source #
Instances
| Printer (Doc ann) Source # | |
Defined in Silkscreen Methods liftDoc0 :: Doc (Ann (Doc ann)) -> Doc ann Source # liftDoc1 :: (Doc (Ann (Doc ann)) -> Doc (Ann (Doc ann))) -> Doc ann -> Doc ann Source # liftDoc2 :: (Doc (Ann (Doc ann)) -> Doc (Ann (Doc ann)) -> Doc (Ann (Doc ann))) -> Doc ann -> Doc ann -> Doc ann Source # enclosing :: Doc ann -> Doc ann -> Doc ann -> Doc ann Source # squotes :: Doc ann -> Doc ann Source # dquotes :: Doc ann -> Doc ann Source # parens :: Doc ann -> Doc ann Source # brackets :: Doc ann -> Doc ann Source # braces :: Doc ann -> Doc ann Source # angles :: Doc ann -> Doc ann Source # column :: (Int -> Doc ann) -> Doc ann Source # | |
| Printer a => Printer (Rainbow a) Source # | |
Defined in Silkscreen.Printer.Rainbow Methods liftDoc0 :: Doc (Ann (Rainbow a)) -> Rainbow a Source # liftDoc1 :: (Doc (Ann (Rainbow a)) -> Doc (Ann (Rainbow a))) -> Rainbow a -> Rainbow a Source # liftDoc2 :: (Doc (Ann (Rainbow a)) -> Doc (Ann (Rainbow a)) -> Doc (Ann (Rainbow a))) -> Rainbow a -> Rainbow a -> Rainbow a Source # enclosing :: Rainbow a -> Rainbow a -> Rainbow a -> Rainbow a Source # squotes :: Rainbow a -> Rainbow a Source # dquotes :: Rainbow a -> Rainbow a Source # parens :: Rainbow a -> Rainbow a Source # brackets :: Rainbow a -> Rainbow a Source # braces :: Rainbow a -> Rainbow a Source # angles :: Rainbow a -> Rainbow a Source # column :: (Int -> Rainbow a) -> Rainbow a Source # | |
| Printer b => Printer (a -> b) Source # | |
Defined in Silkscreen Methods liftDoc0 :: Doc (Ann (a -> b)) -> a -> b Source # liftDoc1 :: (Doc (Ann (a -> b)) -> Doc (Ann (a -> b))) -> (a -> b) -> a -> b Source # liftDoc2 :: (Doc (Ann (a -> b)) -> Doc (Ann (a -> b)) -> Doc (Ann (a -> b))) -> (a -> b) -> (a -> b) -> a -> b Source # enclosing :: (a -> b) -> (a -> b) -> (a -> b) -> a -> b Source # squotes :: (a -> b) -> a -> b Source # dquotes :: (a -> b) -> a -> b Source # parens :: (a -> b) -> a -> b Source # brackets :: (a -> b) -> a -> b Source # braces :: (a -> b) -> a -> b Source # angles :: (a -> b) -> a -> b Source # column :: (Int -> a -> b) -> a -> b Source # | |
| (Printer a, Printer b, Ann a ~ Ann b) => Printer (a, b) Source # | |
Defined in Silkscreen Methods liftDoc0 :: Doc (Ann (a, b)) -> (a, b) Source # liftDoc1 :: (Doc (Ann (a, b)) -> Doc (Ann (a, b))) -> (a, b) -> (a, b) Source # liftDoc2 :: (Doc (Ann (a, b)) -> Doc (Ann (a, b)) -> Doc (Ann (a, b))) -> (a, b) -> (a, b) -> (a, b) Source # enclosing :: (a, b) -> (a, b) -> (a, b) -> (a, b) Source # squotes :: (a, b) -> (a, b) Source # dquotes :: (a, b) -> (a, b) Source # parens :: (a, b) -> (a, b) Source # brackets :: (a, b) -> (a, b) Source # braces :: (a, b) -> (a, b) Source # angles :: (a, b) -> (a, b) Source # column :: (Int -> (a, b)) -> (a, b) Source # | |
| (Bounded level, Printer a) => Printer (Prec level a) Source # | |
Defined in Silkscreen.Printer.Prec Methods liftDoc0 :: Doc (Ann (Prec level a)) -> Prec level a Source # liftDoc1 :: (Doc (Ann (Prec level a)) -> Doc (Ann (Prec level a))) -> Prec level a -> Prec level a Source # liftDoc2 :: (Doc (Ann (Prec level a)) -> Doc (Ann (Prec level a)) -> Doc (Ann (Prec level a))) -> Prec level a -> Prec level a -> Prec level a Source # enclosing :: Prec level a -> Prec level a -> Prec level a -> Prec level a Source # squotes :: Prec level a -> Prec level a Source # dquotes :: Prec level a -> Prec level a Source # parens :: Prec level a -> Prec level a Source # brackets :: Prec level a -> Prec level a Source # braces :: Prec level a -> Prec level a Source # angles :: Prec level a -> Prec level a Source # column :: (Int -> Prec level a) -> Prec level a Source # nesting :: (Int -> Prec level a) -> Prec level a Source # pageWidth :: (PageWidth -> Prec level a) -> Prec level a Source # | |
Combinators
pretty :: (Printer p, Pretty t) => t -> p Source #
Pretty-print a value using the Pretty instance for its type.
prettyList :: (Printer p, Pretty t) => [t] -> p Source #
flatAlt :: Printer p => p -> p -> p Source #
Print the first argument by default, or the second when an enclosing group flattens it.
hang :: Printer p => Int -> p -> p Source #
Indent following lines in the argument to the current column + some delta.
indent :: Printer p => Int -> p -> p Source #
Indent lines in the argument to the current column + some delta.
nest :: Printer p => Int -> p -> p Source #
changes the indentation level for new lines in nest i pp by i.
concatWith :: (Monoid p, Foldable t) => (p -> p -> p) -> t p -> p Source #
encloseSep :: Printer p => p -> p -> p -> [p] -> p Source #
Conditional combinators
parensIf :: Printer p => Bool -> p -> p Source #
Conditional parenthesization of a printer. Analogous to showParen, but for printers.
Symbols
Re-exports
Minimal complete definition
pretty
Instances
Constructors
| AvailablePerLine !Int !Double | |
| Unbounded |
Instances
| Eq PageWidth | |
| Ord PageWidth | |
| Show PageWidth | |