.. -*- coding: utf-8 -*- :mod:`trac.util.text` -- Text manipulation ========================================== .. module :: trac.util.text .. _text_util_jinja2: The Jinja2 template engine -------------------------- As Jinja2 is mainly a text template engine, the low-level helper functions dealing with this package are placed here. .. autofunction :: jinja2env .. autofunction :: jinja2template The Unicode toolbox ------------------- Trac internals are almost exclusively dealing with Unicode text, represented by `unicode` objects. The main advantage of using `unicode` over UTF-8 encoded `str` (as this used to be the case before version 0.10), is that text transformation functions in the present module will operate in a safe way on individual characters, and won't risk to cut a multi-byte sequence in the middle. Similar issues with Python string handling routines are avoided as well. For example, did you know that "Priorità" is encoded as ``'Priorit\xc3\x0a'`` in UTF-8? Calling `strip()` on this value in some locales can cut away the trailing ``\x0a`` and it's no longer valid UTF-8... The drawback is that most of the outside world, while eventually "Unicode", is definitely not `unicode`. This is why we need to convert back and forth between `str` and `unicode` at the boundaries of the system. And more often than not we even have to guess which encoding is used in the incoming `str` strings. Encoding `unicode` to `str` is usually directly performed by calling `encode()` on the `unicode` instance, while decoding is preferably left to the `to_unicode` helper function, which converts `str` to `unicode` in a robust and guaranteed successful way. .. autofunction :: to_unicode .. autofunction :: exception_to_unicode Web utilities ............. .. autofunction :: unicode_quote .. autofunction :: unicode_quote_plus .. autofunction :: unicode_unquote .. autofunction :: unicode_urlencode .. autofunction :: quote_query_string .. autofunction :: javascript_quote .. autofunction :: to_js_string Console and file system ....................... .. autofunction :: getpreferredencoding .. autofunction :: path_to_unicode .. autofunction :: stream_encoding .. autofunction :: console_print .. autofunction :: printout .. autofunction :: printerr .. autofunction :: raw_input Miscellaneous ............. .. data :: empty A special tag object evaluating to the empty string, used as marker for missing value (as opposed to a present but empty value). .. autoclass :: unicode_passwd .. autofunction :: cleandoc .. autofunction :: levenshtein_distance .. autofunction :: sub_vars .. autofunction :: getpreferredencoding Text formatting --------------- .. autofunction :: pretty_size .. autofunction :: breakable_path .. autofunction :: normalize_whitespace .. autofunction :: unquote_label .. autofunction :: fix_eol .. autofunction :: expandtabs .. autofunction :: is_obfuscated .. autofunction :: obfuscate_email_address .. autofunction :: text_width .. autofunction :: print_table .. autofunction :: shorten_line .. autofunction :: stripws .. autofunction :: strip_line_ws .. autofunction :: strip_line_ws .. autofunction :: wrap .. autofunction :: cleandoc .. autofunction :: sub_vars Conversion utilities -------------------- .. autofunction :: unicode_to_base64 .. autofunction :: unicode_from_base64 .. autofunction :: to_utf8