# Nomo, a simple templating library Nomo is pure Rust templating library meant to be unopinionated in which target language it is embedded. Here is an example `nomo` HTML snippet: ```nomo
``` It supports the following features: **If/Else Conditionals** ```nomo {{ if user.level > 3 }} ... {{ else if value == 1 }} ... {{ else }} ... {{ end }} ``` **For Loops** ```nomo {{ for user in users }} {{= user.name }} {{ end }} ``` **Whitespace Supression** ```nomo Hello {{- if world == 2 -}} Hi {{- end }} ``` will print `Hello Hi`. **Function Calls** ```nomo {{= uppercase(user_name) }} ``` One can use function chaining for less nesting: ```nomo {{= user_name | uppercase }} ``` The `|` operator has the lowest precedence of the operators. Functions can still be given arguments. It is always the last argument that is 'applied' by the operator. ```nomo {{= username? | or_default("Unknown") }} ``` **Undefined Chaining** Per default, trying to access a value that is not defined will cause an error. This can be changed with the `?` operator. This can be applied at any level: ```nomo {{= user?.profile.description? }} ``` This will give an error if `user.profile` is not defined. If either `user` or `description` is missing, it simply does not render anything (akin to an empty string). However if there _is_ an user, it must have a profile value.