Safe Haskell | None |
---|---|
Language | Haskell98 |
Pretty printing.
- class (Annotated ast, Typeable ast) => Pretty ast
- pretty :: Pretty ast => ast NodeInfo -> Printer ()
- prettyNoExt :: Pretty ast => ast NodeInfo -> Printer ()
- write :: MonadState PrintState m => String -> m ()
- newline :: MonadState PrintState m => m ()
- space :: MonadState PrintState m => m ()
- comma :: MonadState PrintState m => m ()
- int :: MonadState PrintState m => Integer -> m ()
- string :: MonadState PrintState m => String -> m ()
- withCtx :: Pretty ast => Maybe (ast NodeInfo) -> Printer b -> Printer b
- printComment :: MonadState PrintState m => Maybe SrcSpan -> Comment -> m ()
- printComments :: Pretty ast => ComInfoLocation -> ast NodeInfo -> Printer ()
- withCaseContext :: MonadState PrintState m => Bool -> m a -> m a
- rhsSeparator :: MonadState PrintState m => m ()
- inter :: MonadState PrintState m => m () -> [m ()] -> m ()
- spaced :: MonadState PrintState m => [m ()] -> m ()
- lined :: MonadState PrintState m => [m ()] -> m ()
- prefixedLined :: MonadState PrintState m => String -> [m ()] -> m ()
- commas :: MonadState PrintState m => [m ()] -> m ()
- parens :: MonadState PrintState m => m a -> m a
- brackets :: MonadState PrintState m => m a -> m a
- braces :: MonadState PrintState m => m a -> m a
- indented :: MonadState PrintState m => Int64 -> m a -> m a
- indentedBlock :: MonadState PrintState m => m a -> m a
- column :: MonadState PrintState m => Int64 -> m a -> m a
- getColumn :: MonadState PrintState m => m Int64
- getLineNum :: MonadState PrintState m => m Int64
- depend :: MonadState PrintState m => m () -> m b -> m b
- dependBind :: MonadState PrintState m => m a -> (a -> m b) -> m b
- swing :: Printer () -> Printer b -> Printer ()
- swingBy :: Int64 -> Printer () -> Printer b -> Printer b
- getIndentSpaces :: MonadState PrintState m => m Int64
- getColumnLimit :: MonadState PrintState m => m Int64
- nullBinds :: Binds NodeInfo -> Bool
- sandbox :: MonadState s m => m a -> m (a, s)
- pretty' :: (Pretty ast, Pretty (ast SrcSpanInfo), MonadState PrintState m) => ast NodeInfo -> m ()
Printing
class (Annotated ast, Typeable ast) => Pretty ast Source #
Pretty printing class.
prettyInternal
prettyNoExt :: Pretty ast => ast NodeInfo -> Printer () Source #
Run the basic printer for the given node without calling an extension hook for this node, but do allow extender hooks in child nodes. Also auto-inserts comments.
Insertion
write :: MonadState PrintState m => String -> m () Source #
Write out a string, updating the current position information.
newline :: MonadState PrintState m => m () Source #
Output a newline.
space :: MonadState PrintState m => m () Source #
Write a space.
comma :: MonadState PrintState m => m () Source #
Write a comma.
int :: MonadState PrintState m => Integer -> m () Source #
Write an integral.
string :: MonadState PrintState m => String -> m () Source #
Write a string.
Common node types
withCtx :: Pretty ast => Maybe (ast NodeInfo) -> Printer b -> Printer b Source #
Render a type with a context, or not.
printComment :: MonadState PrintState m => Maybe SrcSpan -> Comment -> m () Source #
Pretty print a comment.
printComments :: Pretty ast => ComInfoLocation -> ast NodeInfo -> Printer () Source #
Print comments of a node.
withCaseContext :: MonadState PrintState m => Bool -> m a -> m a Source #
Set the context to a case context, where RHS is printed with -> .
rhsSeparator :: MonadState PrintState m => m () Source #
Get the current RHS separator, either = or -> .
Interspersing
inter :: MonadState PrintState m => m () -> [m ()] -> m () Source #
Print all the printers separated by sep.
spaced :: MonadState PrintState m => [m ()] -> m () Source #
Print all the printers separated by spaces.
lined :: MonadState PrintState m => [m ()] -> m () Source #
Print all the printers separated by newlines.
prefixedLined :: MonadState PrintState m => String -> [m ()] -> m () Source #
Print all the printers separated newlines and optionally a line prefix.
commas :: MonadState PrintState m => [m ()] -> m () Source #
Print all the printers separated by commas.
Wrapping
parens :: MonadState PrintState m => m a -> m a Source #
Wrap in parens.
brackets :: MonadState PrintState m => m a -> m a Source #
Wrap in brackets.
braces :: MonadState PrintState m => m a -> m a Source #
Wrap in braces.
Indentation
indented :: MonadState PrintState m => Int64 -> m a -> m a Source #
Increase indentation level by n spaces for the given printer.
indentedBlock :: MonadState PrintState m => m a -> m a Source #
column :: MonadState PrintState m => Int64 -> m a -> m a Source #
Set the (newline-) indent level to the given column for the given printer.
getColumn :: MonadState PrintState m => m Int64 Source #
Get the current indent level.
getLineNum :: MonadState PrintState m => m Int64 Source #
Get the current line number.
depend :: MonadState PrintState m => m () -> m b -> m b Source #
Make the latter's indentation depend upon the end column of the former.
dependBind :: MonadState PrintState m => m a -> (a -> m b) -> m b Source #
Make the latter's indentation depend upon the end column of the former.
swing :: Printer () -> Printer b -> Printer () Source #
Swing the second printer below and indented with respect to the first.
swingBy :: Int64 -> Printer () -> Printer b -> Printer b Source #
Swing the second printer below and indented with respect to the first by the specified amount.
getIndentSpaces :: MonadState PrintState m => m Int64 Source #
Indent spaces, e.g. 2.
getColumnLimit :: MonadState PrintState m => m Int64 Source #
Column limit, e.g. 80
Predicates
Sandboxing
sandbox :: MonadState s m => m a -> m (a, s) Source #
Play with a printer and then restore the state to what it was before.
Fallback
pretty' :: (Pretty ast, Pretty (ast SrcSpanInfo), MonadState PrintState m) => ast NodeInfo -> m () Source #
Pretty print using HSE's own printer. The Pretty
class here
is HSE's.