import fett
fett.Template('''{{ for customer in customers }}
{{ if i even }}
Even: {{ customer.name }}
{{ else }}
Odd: {{ customer.name }}
{{ end }}
{{ else }}
No customers :(
{{ end }}''').render({'customers': [
{'name': 'Bob'},
{'name': 'Elvis'},
{'name': 'Judy'}
]})
Tag Format | Description |
---|---|
{{ <expression> }} |
Substitutions |
{{ `foo` <expression> }} |
Substitutions |
{{ format <name> }} |
Metaformatting |
{{ if <expression> }} |
Conditionals |
{{ for <name> in <expression> }} |
Loops |
{{ else }} |
|
{{ end }} |
Block termination |
{{ # <comment> }} |
Comments |
Spaces between tag opening/closing delimiters are optional.
An expression is given for Substitutions, Conditionals, and Loops.
Expressions take the following form:
<name>[.<subfield>...] [<filter> [<filter2>...]]
Instead of specifying a field path, you can start an expression using a string literal:
<literal> [<filter> [<filter2>...]]
You can use filters to modify a single value in simple ways. For example,
the loop iteration counter i
counts from 0
, but users often wish to
count from 1
. You can obtain a count-from-1 value with the expression
i inc
.
The full list of filters:
Filter Name | Effect |
---|---|
car | Returns the first element of a list. |
cdr | Returns all but the first element of a list. |
dec | Decrements a value representable as an integer by one. |
even | Returns true iff its input is representable as an even integer. |
escape | Encodes &, <, >, ", and ' characters with HTML entities. |
inc | Increments a value representable as an integer by one. |
len | Returns the length of a list. |
not | Returns the inverse of a boolean. |
odd | Returns true iff its input is representable as an odd integer. |
negative | Returns true iff its input is representable as an integer < 0. |
positive | Returns true iff its input is representable as an integer > 0. |
split | Splits a value into a list by whitespace. |
strip | Returns the input string with surrounding whitespace removed. |
striptags | Remove HTML tags from a value. |
timesNegOne | Returns int(input) * -1 |
zero | Returns true iff the input is zero |
Filter Name | Effect |
---|---|
upperCase | Returns a Unicode-aware uppercase version of the input. |
lowerCase | Returns a Unicode-aware lowercase version of the input. |
Filter Name | Effect |
---|---|
add(n) | Increments a value representable as an integer by n. |
minus(n) | Decrements a value representable as an integer by n. |
equal(value) | Returns true iff a value equals the given value. |
lessThan(n) | Returns true iff n < the given value. |
lessThanOrEqual(n) | Returns true iff n <= the given value. |
greaterThan(n) | Returns true iff n > the given value. |
greaterThanOrEqual(n) | Returns true iff n >= the given value. |