| Crates.io | tinylang |
| lib.rs | tinylang |
| version | 0.3.2 |
| created_at | 2025-03-31 09:50:08.473571+00 |
| updated_at | 2025-09-14 01:53:46.642383+00 |
| description | TinyLang is a template language build as a simple tree-walk interpreter using PEST. |
| homepage | https://tinylang.elias.tools/ |
| repository | |
| max_upload_size | |
| id | 1613231 |
| size | 189,889 |
TinyLang is a template language build as a simple tree-walk interpreter using PEST.
One of the design decisions is that you cannot assign new values to variables
inside the template file. So you cannot write something like {% a = 2 %}, you
have to actually setup the state on the Rust side. One small exception is the for loop
which does assign and create a new variable to be used inside the template.
| Feature | State | Syntax |
|---|---|---|
| HTML | ✅ | any char |
| Variables | ✅ | lowercase alphanumeric e.g. (myvar) |
| Logical operators | ✅ | and, or |
Print Statements {{}} |
✅ | {{ 1 + 2 + 3 }} |
| Bool, String, Numeric types | ✅ | true, false, 'a string', 3 |
| if/else | ✅ | {% if true %} {% else %} {% end %} |
| loops | ✅ | {%for item in array %} {% end %} |
| function calls | ✅ | my_function('abc') |
| Dot operator | ✅ | something.something_else |
Anything not inside {{ }} (print statement) and {% %} (dynamic statement) will be in the output.
The language supports:
Numbers (integers and floats), String (e.g. 'a string'), bool (true and false).
It's possible to use Vectors (Vec<TinyLangType>) and Objects (a variable with a HashMap<String, TinyLangType>),
but it's not possible to construct them inside a template file. It's only possible to create
those types on the Rust side. You can check the examples on how to use the language at tests/examples.rs .
You can call the eval method which receives the template (&str) and the State (variables and functions accessible inside the template). It returns
the parsed string or an error.
You can also try it out at: https://tinylang.elias.tools
Thank you @Karreiro for the pair-programming on Twitch.