:mod:`trac.util.html` -- HTML transformations
=============================================
.. module :: trac.util.html
Building HTML programmatically
------------------------------
With the introduction of the Jinja2_ template engine in Trac 1.3.x,
the (X)HTML content is produced either using Jinja2 snippet templates
(see `jinja2template`) or using the builder API defined in this
module. This builder API closely matches the Genshi_ `genshi.builder`
API on the surface.
The builder API
...............
The `tag` builder has some knowledge about generating HTML content,
like knowing which elements are "void" elements, how attributes should
be written when given a boolean value, etc.
.. data :: tag
An `ElementFactory`.
.. autoclass :: ElementFactory
.. autoclass :: Element
.. autoclass :: Fragment
Note that the `Element` relies on the following lower-level API for
generating the HTML attributes.
.. autofunction :: html_attribute
.. autofunction :: classes
.. autofunction :: styles
This HTML-specific behavior can be a hindrance to writing generic XML.
In that case, better use the `xml` builder.
.. data :: xml
An `XMLElementFactory`.
.. autoclass :: XMLElementFactory
.. autoclass :: XMLElement
.. _Jinja2: http://jinja.pocoo.org/docs/dev/intro/
.. _Genshi: http://genshi.edgewall.org/wiki/ApiDocs/genshi.builder
Building HTML from strings
..........................
It is also possible to mark an arbitrary string as containing HTML
content, so that it will not be HTML-escaped by the template engine.
For this, use the `Markup` class, taken from the `markupsafe` package
(itself a dependency of the Jinja2_ package).
The `Markup` class should be imported from the present module:
.. sourcecode:: python
from trac.util.html import Markup
HTML clean-up and sanitization
------------------------------
.. autoclass :: TracHTMLSanitizer
:members:
.. autoclass :: Deuglifier
.. autofunction :: escape
.. autofunction :: unescape
.. autofunction :: stripentities
.. autofunction :: striptags
.. autofunction :: plaintext
.. autoclass :: FormTokenInjector
.. autoclass :: HTMLTransform
.. autoclass :: HTMLSanitization
Misc. HTML processing
---------------------
.. autofunction :: find_element
.. autofunction :: to_fragment
.. autofunction :: valid_html_bytes
.. autofunction :: to_fragment
Kept for backward compatibility purposes:
.. autofunction :: expand_markup