prettyprinter-1.2.1.1: A modern, easy to use, well-documented, extensible pretty-printer.

Data.Text.Prettyprint.Doc.Render.Tutorials.TreeRenderingTutorial

Description

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

# Documentation

data Color Source #

Constructors

 Red Green Blue

Constructors

 Bold Italics Color Color Paragraph Headline

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.

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.

Convert a SimpleHtml to a function that encloses a Builder in HTML tags. This is where the translation of style to raw output happens.