10 releases
0.1.9 | Oct 9, 2024 |
---|---|
0.1.8 | Oct 9, 2024 |
#156 in Template engine
32KB
698 lines
CrabTML: A Rust-based Template Engine
CrabTML is a lightweight and flexible template engine written in Rust. It provides a simple yet powerful way to render dynamic content in your applications.
[!WARNING]
This project is still in early development and is not recommended for production use.
Features
- Variable interpolation
- Conditional rendering
- Loop constructs
- Nested object access
- File-based and string-based template loading
- Easy-to-use API
Installation
Add this to your Cargo.toml
:
[dependencies]
crabtml = "0.1.0"
Usage
Here's a quick example of how to use CrabTML:
use crabtml::{TemplateEngine, Value, Context};
use std::collections::HashMap;
fn main() {
let mut engine = TemplateEngine::new();
// Load a template from a string
engine.add_template_from_string("example", "hello {{ text }}").unwrap();
// Create a context
let mut context = Context::new();
context.set(
"text",
"darkness my old friend",
);
// Render the template
let result = engine.render("example", &mut context).unwrap();
println!("{}", result); // -> hello darkness my old friend
// You can also create a context using the `context!` macro,
// and objects using the `object!` macro
use crabtml::{context, object};
let mut context = context! {
"text" => "darkness my old friend",
"user" => object! {
"name" => "trav",
"age" => 35,
},
};
}
For more detailed examples, check the tests
module in the source code.
Template Syntax
CrabTML supports the following syntax:
- Variables:
{{ variable_name }}
- Conditionals:
{% if condition %} ... {% else %} ... {% endif %}
- Loops:
{% for item in items %} ... {% endfor %}
- Nested object access:
{{ user.name }}
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Dependencies
~1.4–2.3MB
~48K SLoC