Concatenate the given documents together.
Concatenate the given documents together.
cat(ds)
is equivalent to ds.foldLeft(empty)(_ + _)
Build a document from a single character.
a literal comma, equivalent to char(',')
Defer creation of a Doc until absolutely needed.
Defer creation of a Doc until absolutely needed. This is useful in some recursive algorithms
Require documents to be equivalent at all the given widths, as well as at their "wide" renderings.
Collapse a collection of documents into one document, delimited by a separator.
Collapse a collection of documents into one document, delimited by a separator.
For example:
import Doc.{ comma, line, text, fill } val ds = text("1") :: text("2") :: text("3") :: Nil val doc = fill(comma + line, ds)
doc.render(0) // produces "1,\n2,\n3" doc.render(6) // produces "1, 2,\n3" doc.render(10) // produces "1, 2, 3"
Combine documents, using the given associative function.
Combine documents, using the given associative function.
The function fn
must be associative. That is, the expression
fn(x, fn(y, z))
must be equivalent to fn(fn(x, y), z)
.
In practice this method builds documents from the right, so that the resulting concatenations are all right-associated.
Concatenate the given documents together, delimited by the given separator.
Concatenate the given documents together, delimited by the given separator.
For example, intercalate(comma, List(a, b, c))
is equivalent to
a + comma + b + comma + b
.
when flattened a line becomes a space You might also @see lineBreak if you want a line that is flattened into empty
A lineBreak is a line that is flattened into an empty Doc.
A lineBreak is a line that is flattened into an empty Doc. This is generally useful in code following tokens that parse without the need for whitespace termination (consider ";" "," "=>" etc..)
when we call .grouped
on lineBreak we get lineOrEmpty
lineOrEmpty renders as empty if we can fit the rest or inserts a newline.
lineOrEmpty renders as empty if we can fit the rest or inserts a newline. Identical to lineBreak.grouped
lineOrSpace renders a space if we can fit the rest or inserts a newline.
lineOrSpace renders a space if we can fit the rest or inserts a newline. Identical to line.grouped
Order documents by how they render at the given width.
Split the given text into words (separated by whitespace), and then join those words with a space or newline.
Split the given text into words (separated by whitespace), and then join those words with a space or newline.
This produces text which will wrap naturally at line boundaries, producing a block of text.
paragraph
is an alias for Doc.split(s), which uses its default
arguments to split on whitespace and to rejoin the documents with
Doc.lineOrSpace
.
Produce a document of exactly n
spaces.
Produce a document of exactly n
spaces.
If n < 1
, and empty document is returned.
Convert a string to text, replacing instances of the given pattern with the corresponding separator.
Convert a string to text, replacing instances of the given pattern with the corresponding separator.
Like Doc.text, this method will also lift newlines into the Doc abstraction.
The default pattern to use is """\s+""".r
and the default
separator to use is Doc.lineOrSpace
.
Concatenate the given documents together, delimited by spaces.
Concatenate the given documents together, delimited by newlines.
Convert an arbitrary value to a Doc, using toString
.
Convert an arbitrary value to a Doc, using toString
.
This method is equivalent to Doc.text(t.toString)
.
build a table with the strings left aligned and the Docs starting in the column after the longest string.
build a table with the strings left aligned and the Docs starting in the column after the longest string. The Docs on the right are rendered aligned after the rightSep
the character used to fill the columns to make the values aligned (i.e. ' ' or '.')
a string append left to the left of the value. Intended for use with bullets on values
a List of key, value pairs to put in a table.
A simple table which is the same as: tabulate("", ' ', "", kv)
A simple table which is the same as: tabulate("", ' ', "", kv)
or, no right separator and a space as the fill
Convert a string to text.
Convert a string to text.
This method translates newlines into an appropriate document
representation. The result may be much more complex than a single
Text(_)
node.