Idris2Doc : Text.PrettyPrint.Bernardy.Combinators

Text.PrettyPrint.Bernardy.Combinators

(source)

Definitions

symbol : Char->Docopts
  Creates a single-line document from the given character.

@c A printable non-control character.

Totality: total
Visibility: export
space : Docopts
  A single space character.

Totality: total
Visibility: export
squote : Docopts
Totality: total
Visibility: export
dquote : Docopts
Totality: total
Visibility: export
lparen : Docopts
Totality: total
Visibility: export
rparen : Docopts
Totality: total
Visibility: export
langle : Docopts
Totality: total
Visibility: export
rangle : Docopts
Totality: total
Visibility: export
lbracket : Docopts
Totality: total
Visibility: export
rbracket : Docopts
Totality: total
Visibility: export
lbrace : Docopts
Totality: total
Visibility: export
rbrace : Docopts
Totality: total
Visibility: export
semi : Docopts
Totality: total
Visibility: export
colon : Docopts
Totality: total
Visibility: export
comma : Docopts
Totality: total
Visibility: export
dot : Docopts
Totality: total
Visibility: export
slash : Docopts
Totality: total
Visibility: export
backslash : Docopts
Totality: total
Visibility: export
equals : Docopts
Totality: total
Visibility: export
pipe : Docopts
Totality: total
Visibility: export
enclose : Docopts->Docopts->Docopts->Docopts
  Encloses the document between two other documents using `(<+>)`.

Totality: total
Visibility: export
squotes : Docopts->Docopts
  Encolses a document in single quotes.

Totality: total
Visibility: export
dquotes : Docopts->Docopts
  Encolses a document in double quotes.

Totality: total
Visibility: export
parens : Docopts->Docopts
  Encolses a document in parentheses.

Totality: total
Visibility: export
parenthesise : Bool->Docopts->Docopts
  Encolses a document in parentheses if `b` equals `True`.

Totality: total
Visibility: export
angles : Docopts->Docopts
  Encolses a document in angles (`<` and `>`).

Totality: total
Visibility: export
braces : Docopts->Docopts
  Encolses a document in curly braces.

Totality: total
Visibility: export
brackets : Docopts->Docopts
  Encolses a document in brackets.

Totality: total
Visibility: export
ifMultiline : Docopts->Docopts->Docopts
  Tries to layout the first document on a single line, replacing
it with the alternative if a) it does not fit the page with or b)
it inherently is placed on several lines.

This combinator is very useful for pretty printing Idris values
(data constructors, lists, records), because we typically try to
place them on a single line if and only if they fit the page width
and none of their arguments is placed on several lines.

Totality: total
Visibility: export
(<++>) : Docopts->Docopts->Docopts
  Concatenates two documents horizontally with a single space between them.

Totality: total
Visibility: export
Fixity Declaration: infixl operator, level 8
(<+?+>) : Docopts->Docopts->Docopts
  Concatenates two documents horizontally with a space between them, if both
documents are not empty.

Totality: total
Visibility: export
Fixity Declaration: infixl operator, level 8
vappend : Docopts->Docopts->Docopts
Totality: total
Visibility: export
hcat : List (Docopts) ->Docopts
  Concatenate a sequence of documents horizontally using `(<+>)`.

Totality: total
Visibility: export
hsep : List (Docopts) ->Docopts
  Concatenate a sequence of documents horizontally using `(<++>)`.

Totality: total
Visibility: export
vsep : List (Docopts) ->Docopts
  Concatenate a list of documents vertically.

Totality: total
Visibility: export
hang : Nat->Docopts->Docopts->Docopts
  Tries to layout the two documents horizontally, but appends
the second indented by the given number of spaces below the
first if the horizontal version exceeds the width limit.

Totality: total
Visibility: export
hangSep : Nat->Docopts->Docopts->Docopts
  Like `hang` but separates the two documents by a space in case of
a horizontal alignment.

Totality: total
Visibility: export
hang' : Nat->Docopts->Docopts->Docopts
  Tries to layout the two documents horizontally, but appends
the second indented by the given number of spaces below the
first if the horizontal version exceeds the width limit, or
if needs several lines.

Totality: total
Visibility: export
hangSep' : Nat->Docopts->Docopts->Docopts
  Like `hang'` but separates the two documents by a space in case of
a horizontal alignment.

Totality: total
Visibility: export
sep : List (Docopts) ->Docopts
  Tries to separate the given documents horizontally, but
concatenates them vertically if the horizontal layout exceeds the
width limit.

Totality: total
Visibility: export
sep' : List (Docopts) ->Docopts
  Tries to separate the given documents horizontally, but
concatenates them vertically if the horizontal layout exceeds the
width limit, or horizontal layout leads to a multiline document.

Totality: total
Visibility: export
when : Bool->Docopts->Docopts
  Add the given document only when condition is true

Totality: total
Visibility: export
generalList : Docopts->Docopts->Docopts->List (Docopts) ->Docopts
  Pretty prints a list of documents separated by the given delimiter
and wrapping them in opening and closing symbols.

If it fits the page width, the document is layed out horizontally,
otherwise it's layed out vertically with leading commas.

Horizontal layout for `generalList "[" "]" "," [1,2,3]:

```
[1, 2, 3]
```

Vertical layout:

```
[ 1
, 2
, 3
]
```

Totality: total
Visibility: export
list : List (Docopts) ->Docopts
  Pretty prints a list of documents separated by commas
and wrapping them in brackets.

If it fits the page width, the document is layed out horizontally,
otherwise it's layed out vertically with leading delimiters.

Horizontal layout:

```
[1, 2, 3]
```

Vertical layout:

```
[ 1
, 2
, 3
]
```

Totality: total
Visibility: export
snocList : List (Docopts) ->Docopts
  Pretty prints a `SnocList` of documents separated by commas
and wrapping them in brackets.

If it fits the page width, the document is layed out horizontally,
otherwise it's layed out vertically with leading commas.

Horizontal layout:

```
[<1, 2, 3]
```

Vertical layout:

```
[<1
, 2
, 3
]
```

Totality: total
Visibility: export
tuple : List (Docopts) ->Docopts
  Pretty prints a list of documents separated by commas
and wrapping them in parentheses.

Horizontal layout:

```
(x, y, z)
```

Vertical layout:

```
( x
, y
, z
)
]

Totality: total
Visibility: export
fields : List (Docopts) ->Docopts
  Pretty prints a list of documents separated by commas
and wrapping them in curly braces.

Horizontal layout:

```
{x, y, z}
```

Vertical layout:

```
{ x
, y
, z
}
]

Totality: total
Visibility: export