ustache, Mustache for Python
Reason this release was yanked:
alpha
Project description
ustache
Mustache for Python.
Documentation: ustache.readthedocs.io
Usage
import ustache
print(ustache.render('Hello {{v}}', {'v': 'World!'}))
# Hello World!
Command line:
$ ustache -j data.json -o output.html template.mustache
Highlights
- Command line interface.
- Spec compliant, but also highly compatible with
Mustache.js
. - Fast and small codebase, efficiently rendering to
str
orbytes
, supporting streaming. - Customizable (property getter, partial resolver, and stringify, escape and lambda render functions).
Considerations
For inter-compatibility with JavaScript (especially Mustache.js
, enabling
client-side rendering with the same templates), ustache exposes some
atypical behavior:
- Mustache blocks stick to JavaScript falseness (
__bool__
is not honored):None
,False
,0
,nan
, and empty sequences (including strings) are taken as falsy, while everything else (including empty mappings) will be considered truthy (Mustache.js
Boolean
and emptyArray
handling). - Mustache blocks receiving any iterable other than mappings and strings
will result on a loop (
Mustache.js
Array
handling). - Sequences expose a virtual
length
property (JavaScriptArray.length
emulation). Customizable viagetter
parameter. - Mapping keys containing dot (
.
) or whitespace (Mustache.js
property name limitation). Customizable viagetter
parameter. - Sequence elements are accessible by positive index in the same way mapping
integer-keyed items are also accessible if no string key conflicts, as
properties (JavaScript
Object
emulation). Customizable viagetter
parameter.
Syntax
Check out the mustache(5) manual.
For quick reference, here is a quick overview of the Mustache syntax.
Template (template.mustache
):
{{!comment}}
<ul>
{{#object}}<li>{{property}}</li>{{/object}}
{{^object}}<li>As <b>object</b> is truthy, this won't be shown</li>{{/object}}
{{^null}}<li><b>null</b> is falsy</li>{{/null}}
{{#array}}<li>{{property}}</li>
{{/array}}
{{^array}}<li>Array isn't empty, this won't be shown.</li>{{/array}}
{{#empty_array}}<li>Empty Array, this won't be shown</li>{{/empty_array}}
{{^empty_array}}<li>empty_array is empty</li>{{/empty_array}}
{{&unescaped_html}}
</ul>
Data (data.json
):
{
"object": {
"property": "Object property value"
},
"null": null,
"array": [
{"property": "Array item1 property"},
{"property": "Array item2 property"},
{"property": "Array item3 property"}
],
"empty_array": [],
"unescaped_html": "<li>this is unescaped html</li>"
}
Command:
$ python -m ustache -j data.json -o template.mustache
Output:
<ul>
<li>Object property value</li>
<li><b>null</b> is falsy</li>
<li>Array item1 property</li>
<li>Array item2 property</li>
<li>Array item3 property</li>
<li>empty_array is empty</li>
<li>this is unescaped html</li>
</ul>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ustache-0.1.2a20210129.tar.gz
(10.2 kB
view details)
Built Distribution
File details
Details for the file ustache-0.1.2a20210129.tar.gz
.
File metadata
- Download URL: ustache-0.1.2a20210129.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 505a6923025c0ec912c34b34ba3f58870a3e18b2135074e91cca602290a1cde9 |
|
MD5 | e4f870fe9267d2f5ace6a620d150c5f9 |
|
BLAKE2b-256 | b33f3b2d61e8a6ed630a47c7d92563643306b6fa94e0816b3cb86270353576af |
File details
Details for the file ustache-0.1.2a20210129-py3-none-any.whl
.
File metadata
- Download URL: ustache-0.1.2a20210129-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 668deb6e29f1960ce24c0837dfa1a3b25913158909d7ae05778fb72c45450337 |
|
MD5 | 4b021cdaf7592c0f06a81b186eacab78 |
|
BLAKE2b-256 | 2361a7f53d2d272383c9233539f2b36ca2371c62f4fd97460647c673cfd2ffb1 |