Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
This module shows how to write a custom prettyprinter backend, based on a
tree representation of a SimpleDocStream
. For a stack machine approach, which
may be more suitable for certain output formats, see
Data.Text.Prettyprint.Doc.Render.Tutorials.StackMachineTutorial.
Rendering to HTML, particularly using libraries such as blaze-html or lucid, is one important use case of tree-based rendering.
The module is written to be readable top-to-bottom in both Haddock and raw source form.
Synopsis
- data Color
- data SimpleHtml
- bold :: Doc SimpleHtml -> Doc SimpleHtml
- italics :: Doc SimpleHtml -> Doc SimpleHtml
- paragraph :: Doc SimpleHtml -> Doc SimpleHtml
- headline :: Doc SimpleHtml -> Doc SimpleHtml
- color :: Color -> Doc SimpleHtml -> Doc SimpleHtml
- render :: SimpleDocStream SimpleHtml -> Text
- renderTree :: SimpleDocTree SimpleHtml -> Builder
- encloseInTagFor :: SimpleHtml -> Builder -> Builder
Documentation
bold :: Doc SimpleHtml -> Doc SimpleHtml Source #
italics :: Doc SimpleHtml -> Doc SimpleHtml Source #
paragraph :: Doc SimpleHtml -> Doc SimpleHtml Source #
headline :: Doc SimpleHtml -> Doc SimpleHtml Source #
color :: Color -> Doc SimpleHtml -> Doc SimpleHtml Source #
render :: SimpleDocStream SimpleHtml -> Text Source #
To render the HTML, we first convert the SimpleDocStream
to the
SimpleDocTree
format, which makes enveloping sub-documents in markup
easier.
This function is the entry main API function of the renderer; as such, it is
only glue for the internal functions. This is similar to
render
from
the stack machine tutorial in its purpose.
renderTree :: SimpleDocTree SimpleHtml -> Builder Source #
Render a SimpleDocTree
to a Builder
; this is the workhorse of the
tree-based rendering approach, and equivalent to
renderStackMachine
in the stack machine rendering tutorial.
encloseInTagFor :: SimpleHtml -> Builder -> Builder Source #
Convert a SimpleHtml
to a function that encloses a Builder
in HTML
tags. This is where the translation of style to raw output happens.