Elm.Pretty is a pretty printer for Elm syntax trees. It makes use of
the-sett/elm-pretty-printer to best fit the code to a given page width in
characters.
It aims to output code that is fully stable with respect to elm-format in the
sense that running elm-format on the output should have no effect at all. The
advantage of this is that if generated code moves to being edited by hand, there
will not be a large white-space only diff created when elm-format is applied.
To print the Doc created by the pretty functions, the-sett/elm-pretty-printer
is used:
import Elm.Pretty
import Pretty
-- Fit to a page width of 120 characters
elmAsString =
Elm.Pretty.prepareLayout 120 someFile
|> Pretty.pretty 120Use the Pretty.Renderer module to consume the Tags when printing to create
fancy outputs such as HTML or console colors for syntax highlighting:
-- Fit to a column width of 120 characters
elmAsHtmlWithHighlighting =
Elm.Pretty.prepareLayout 120 someFile
|> Pretty.Renderer.pretty htmlRenderer 120There is also a helper pretty function in this module that can go straight to
a String, for convenience:
-- Fit to a page width of 120 characters
elmAsString =
Elm.Pretty.pretty 120 someFilePrepares a file of Elm code for layout by the pretty printer.
Note that the Doc type returned by this is a Pretty.Doc. This can be printed
to a string by the the-sett/elm-pretty-printer package.
These Doc based functions are exposed in case you want to pretty print some
Elm inside something else with the pretty printer, or do more fancy outputs with
syntax highlighting.
The pretty function can be used to go directly from a File to a String, if
that is more convenient.
Prints a file of Elm code to the given page width, making use of the pretty printer.
Pretty prints a module definition.
Pretty prints a list of import statements.
The list will be de-duplicated and sorted.
Pretty prints the contents of an exposing statement, as found on a module or import statement.
The exposed values will be de-duplicated and sorted.
Pretty prints a single top-level declaration.
Pretty prints an Elm function, which may include documentation and a signature too.
Pretty prints a type alias definition, which may include documentation too.
Pretty prints a custom type declaration, which may include documentation too.
Pretty prints a port declaration.
Pretty prints a destructuring declaration.
Pretty prints a type signature.
Pretty prints a pattern.
Pretty prints an expression.
Pretty prints a type annotation.
Elm syntax tags. The pretty print
Doc Tagis parameterized over this set of tags, which describe which part of the Elm syntax the various parts of theDocare for.