textSpaces : Int -> String
- Totality: total
Visibility: export data PageWidth : Type
Maximum number of characters that fit in one line.
Totality: total
Visibility: public export
Constructors:
AvailablePerLine : Int -> Double -> PageWidth
The `Int` is the number of characters, including whitespace, that fit in a line.
The `Double` is the ribbon, the fraction of the toal page width that can be printed on.
Unbounded : PageWidth
The layouters should not introduce line breaks.
data FusionDepth : Type
Fusion depth parameter.
Totality: total
Visibility: public export
Constructors:
Shallow : FusionDepth
Do not dive deep into nested documents.
Deep : FusionDepth
Recurse into all parts of the `Doc`. May impact performace.
data Doc : Type -> Type
This data type represents pretty documents that have
been annotated with an arbitrary data type `ann`.
Totality: total
Visibility: public export
Constructors:
Empty : Doc ann
Chara : Char -> Doc ann
Text : Int -> String -> Doc ann
Line : Doc ann
FlatAlt : Lazy (Doc ann) -> Lazy (Doc ann) -> Doc ann
Cat : Doc ann -> Doc ann -> Doc ann
Nest : Int -> Doc ann -> Doc ann
Union : Lazy (Doc ann) -> Lazy (Doc ann) -> Doc ann
Column : (Int -> Doc ann) -> Doc ann
WithPageWidth : (PageWidth -> Doc ann) -> Doc ann
Nesting : (Int -> Doc ann) -> Doc ann
Annotated : ann -> Doc ann -> Doc ann
Hints:
Cast (Doc Void) (Doc ann)
FromString (Doc ann)
Functor Doc
Monoid (Doc ann)
Semigroup (Doc ann)
Show (Doc ann)
column : (Int -> Doc ann) -> Doc ann
Layout a document depending on which column it starts at.
Totality: total
Visibility: exportnest : Int -> Doc ann -> Doc ann
Lays out a document with the current nesting level increased by `i`.
Totality: total
Visibility: exportnesting : (Int -> Doc ann) -> Doc ann
Layout a document depending on the current nesting level.
Totality: total
Visibility: exportwidth : Doc ann -> (Int -> Doc ann) -> Doc ann
Lays out a document, and makes the column width of it available to a function.
Totality: total
Visibility: exportpageWidth : (PageWidth -> Doc ann) -> Doc ann
Layout a document depending on the page width, if one has been specified.
Totality: total
Visibility: exportalign : Doc ann -> Doc ann
Lays out a document with the nesting level set to the current column.
Totality: total
Visibility: exporthang : Int -> Doc ann -> Doc ann
Lays out a document with a nesting level set to the current column plus `i`.
Negative values are allowed, and decrease the nesting level accordingly.
Totality: total
Visibility: exportspaces : Int -> Doc ann
Insert a number of spaces.
Totality: total
Visibility: exportindent : Int -> Doc ann -> Doc ann
Indents a document with `i` spaces, starting from the current cursor position.
Totality: total
Visibility: exportfill : Int -> Doc ann -> Doc ann
Lays out a document. It then appends spaces until the width is equal to `i`.
If the width is already larger, nothing is appended.
Totality: total
Visibility: export(<++>) : Doc ann -> Doc ann -> Doc ann
Concatenates two documents with a space in between.
Totality: total
Visibility: export
Fixity Declaration: infixr operator, level 6emptyDoc : Doc ann
The empty document behaves like `pretty ""`, so it has a height of 1.
Totality: total
Visibility: exportsoftline : Doc ann
Behaves like `space` if the resulting output fits the page, otherwise like `line`.
Totality: total
Visibility: exportsoftline' : Doc ann
Like `softline`, but behaves like `neutral` if the resulting output does not fit
on the page.
Totality: total
Visibility: exporthardline : Doc ann
A line break, even when grouped.
Totality: total
Visibility: exportgroup : Doc ann -> Doc ann
Tries laying out a document into a single line by removing the contained
line breaks; if this does not fit the page, or has an `hardline`, the document
is laid out without changes.
Totality: total
Visibility: exportflatAlt : Lazy (Doc ann) -> Lazy (Doc ann) -> Doc ann
By default renders the first document, When grouped renders the second, with
the first as fallback when there is not enough space.
Totality: total
Visibility: exportline : Doc ann
Advances to the next line and indents to the current nesting level.
Totality: total
Visibility: exportline' : Doc ann
Like `line`, but behaves like `neutral` if the line break is undone by `group`.
Totality: total
Visibility: exportfillBreak : Int -> Doc ann -> Doc ann
First lays out the document. It then appends spaces until the width is equal to `i`.
If the width is already larger than `i`, the nesting level is decreased by `i`
and a line is appended.
Totality: total
Visibility: exportconcatWith : (Doc ann -> Doc ann -> Doc ann) -> List (Doc ann) -> Doc ann
Concatenate all documents element-wise with a binary function.
Totality: total
Visibility: exporthsep : List (Doc ann) -> Doc ann
Concatenates all documents horizontally with `(<++>)`.
Totality: total
Visibility: exportvsep : List (Doc ann) -> Doc ann
Concatenates all documents above each other. If a `group` undoes the line breaks,
the documents are separated with a space instead.
Totality: total
Visibility: exportfillSep : List (Doc ann) -> Doc ann
Concatenates the documents horizontally with `(<++>)` as long as it fits the page,
then inserts a line and continues.
Totality: total
Visibility: exportsep : List (Doc ann) -> Doc ann
Tries laying out the documents separated with spaces and if this does not fit,
separates them with newlines.
Totality: total
Visibility: exporthcat : List (Doc ann) -> Doc ann
Concatenates all documents horizontally with `(<+>)`.
Totality: total
Visibility: exportvcat : List (Doc ann) -> Doc ann
Vertically concatenates the documents. If it is grouped, the line breaks are removed.
Totality: total
Visibility: exportfillCat : List (Doc ann) -> Doc ann
Concatenates documents horizontally with `(<+>)` as log as it fits the page, then
inserts a line and continues.
Totality: total
Visibility: exportcat : List (Doc ann) -> Doc ann
Tries laying out the documents separated with nothing, and if it does not fit the page,
separates them with newlines.
Totality: total
Visibility: exportpunctuate : Doc ann -> List (Doc ann) -> List (Doc ann)
Appends `p` to all but the last document.
Totality: total
Visibility: exportplural : (Num amount, Eq amount) => doc -> doc -> amount -> doc
- Totality: total
Visibility: export enclose : Doc ann -> Doc ann -> Doc ann -> Doc ann
Encloses the document between two other documents using `(<+>)`.
Totality: total
Visibility: exportsurround : Doc ann -> Doc ann -> Doc ann -> Doc ann
Reordering of `encloses`.
Example: concatWith (surround (pretty ".")) [pretty "Text", pretty "PrettyPrint", pretty "Doc"]
Text.PrettyPrint.Doc
Totality: total
Visibility: exportencloseSep : Doc ann -> Doc ann -> Doc ann -> List (Doc ann) -> Doc ann
Concatenates the documents separated by `s` and encloses the resulting document by `l` and `r`.
Totality: total
Visibility: exportannotate : ann -> Doc ann -> Doc ann
Adds an annotation to a document.
Totality: total
Visibility: exportalterAnnotations : (ann -> List ann') -> Doc ann -> Doc ann'
Changes the annotations of a document. Individual annotations can be removed,
changed, or replaced by multiple ones.
Totality: total
Visibility: exportunAnnotate : Doc ann -> Doc xxx
Removes all annotations.
Totality: total
Visibility: exportreAnnotate : (ann -> ann') -> Doc ann -> Doc ann'
Changes the annotations of a document.
Totality: total
Visibility: exportinterface Pretty : Type -> Type -> Type
Overloaded conversion to `Doc`.
@ ann is the type of annotations
@ a is the type of things that can be prettified
We declare that only `a` is relevant when looking for an implementation
Pro tips:
1. use `prettyBy` if a subprinter uses a different type of annotations
2. use a variable `ann` rather than `Void` if no annnotation is needed
(to avoid needless calls to `prettyBy absurd`)
Parameters: ann, a
Methods:
pretty : a -> Doc ann
prettyPrec : Prec -> a -> Doc ann
Implementations:
Pretty Void Token
Pretty Void PkgVersion
Pretty Void PkgVersionBounds
Pretty Void Depends
Pretty Void PkgDesc
Pretty IdrisSyntax NamedCExp
Pretty IdrisSyntax NamedConAlt
Pretty IdrisSyntax NamedConstAlt
Pretty IdrisSyntax (CExp args)
Pretty IdrisDocAnn CDef
Pretty IdrisSyntax (NamedPats vars todo)
Pretty IdrisSyntax (PatClause vars todo)
Pretty IdrisSyntax Premise
Pretty IdrisSyntax IPTerm
Pretty Void StopReason
Pretty Void Token
Pretty Void REPLEval
Pretty Void REPLOpt
Pretty IdrisSyntax Pat
Pretty ann DotReason
Pretty Void FC
Pretty Void Namespace
Pretty Void ModuleIdent
Pretty Void UserName
Pretty Void Name
Pretty Void String
Pretty Void Char
Pretty IdrisSyntax PrimType
Pretty IdrisSyntax Constant
Pretty Void Visibility
Pretty Void PartialReason
Pretty Void Terminating
Pretty Void Covering
Pretty Void Totality
pretty : Pretty ann a => a -> Doc ann
- Totality: total
Visibility: public export prettyPrec : Pretty ann a => Prec -> a -> Doc ann
- Totality: total
Visibility: public export prettyBy : Pretty ann1 a => (ann1 -> ann2) -> a -> Doc ann2
Sometimes we want to call a subprinter that uses a different annotation
type. That's fine as long as we know how to embed such annotations into
the target ones.
@ ann1 is the type of annotations used by the subprinter
@ ann2 is the type of annotations used in the current document
@ inj explains how to inject the first into the second
Totality: total
Visibility: exportpretty0 : Pretty Void a => a -> Doc ann
Sometimes we want to call a subprinter that uses no annotation whatsoever.
This should be equivalent to `prettyBy absurd`, except that in this case
we do not traverse the document because it should be impossible to manufacture
an annotation of type Void.
Totality: total
Visibility: exportbyShow : Show a => a -> Doc ann
- Totality: total
Visibility: export list : List (Doc ann) -> Doc ann
Variant of `encloseSep` with braces and comma as separator.
Totality: total
Visibility: exporttupled : List (Doc ann) -> Doc ann
Variant of `encloseSep` with parentheses and comma as separator.
Totality: total
Visibility: exportprettyList : Pretty ann a => List a -> Doc ann
- Totality: total
Visibility: export prettyList1 : Pretty ann a => List1 a -> Doc ann
- Totality: total
Visibility: export prettyMaybe : Pretty ann a => Maybe a -> Doc ann
- Totality: total
Visibility: export fuse : FusionDepth -> Doc ann -> Doc ann
Combines text nodes so they can be rendered more efficiently.
Totality: total
Visibility: exportdata SimpleDocStream : Type -> Type
This data type represents laid out documents and is used by the display functions.
Totality: total
Visibility: public export
Constructors:
SEmpty : SimpleDocStream ann
SChar : Char -> Lazy (SimpleDocStream ann) -> SimpleDocStream ann
SText : Int -> String -> Lazy (SimpleDocStream ann) -> SimpleDocStream ann
SLine : Int -> SimpleDocStream ann -> SimpleDocStream ann
SAnnPush : ann -> SimpleDocStream ann -> SimpleDocStream ann
SAnnPop : SimpleDocStream ann -> SimpleDocStream ann
Hint: Functor SimpleDocStream
alterAnnotationsS : (ann -> Maybe ann') -> SimpleDocStream ann -> SimpleDocStream ann'
Changes the annotation of a document to a different annotation or none.
Totality: total
Visibility: exportunAnnotateS : SimpleDocStream ann -> SimpleDocStream xxx
Removes all annotations.
Totality: total
Visibility: exportreAnnotateS : (ann -> ann') -> SimpleDocStream ann -> SimpleDocStream ann'
Changes the annotation of a document.
Totality: total
Visibility: exportcollectAnnotations : Monoid m => (ann -> m) -> SimpleDocStream ann -> m
Collects all annotations from a document.
Totality: total
Visibility: exporttraverse : Applicative f => (ann -> f ann') -> SimpleDocStream ann -> f (SimpleDocStream ann')
Transform a document based on its annotations.
Totality: total
Visibility: exportremoveTrailingWhitespace : SimpleDocStream ann -> SimpleDocStream ann
Removes all trailing space characters.
Totality: total
Visibility: exportFittingPredicate : Type -> Type
- Totality: total
Visibility: public export defaultPageWidth : PageWidth
- Totality: total
Visibility: export record LayoutOptions : Type
- Totality: total
Visibility: public export
Constructor: MkLayoutOptions : PageWidth -> LayoutOptions
Projection: .layoutPageWidth : LayoutOptions -> PageWidth
.layoutPageWidth : LayoutOptions -> PageWidth
- Totality: total
Visibility: public export layoutPageWidth : LayoutOptions -> PageWidth
- Totality: total
Visibility: public export defaultLayoutOptions : LayoutOptions
- Totality: total
Visibility: export layoutWadlerLeijen : FittingPredicate ann -> PageWidth -> Doc ann -> SimpleDocStream ann
The Wadler/Leijen layout algorithm.
Totality: total
Visibility: exportlayoutUnbounded : Doc ann -> SimpleDocStream ann
Layout a document with unbounded page width.
Totality: total
Visibility: exportlayoutPretty : LayoutOptions -> Doc ann -> SimpleDocStream ann
The default layout algorithm.
Totality: total
Visibility: exportlayoutSmart : LayoutOptions -> Doc ann -> SimpleDocStream ann
Layout algorithm with more lookahead than layoutPretty.
Totality: total
Visibility: exportlayoutCompact : Doc ann -> SimpleDocStream ann
Lays out the document without adding any indentation. This layouter is very fast.
Totality: total
Visibility: exportrenderShow : SimpleDocStream ann -> String -> String
- Totality: total
Visibility: export displaySpans : SimpleDocStream a -> (String, List (Span a))
- Totality: total
Visibility: export