Michael Pfaff e4def7d21c | ||
---|---|---|
.github | ||
assets/javascripts/workers/templates | ||
benches | ||
docs | ||
examples | ||
resources | ||
sailfish | ||
sailfish-compiler | ||
sailfish-macros | ||
sailfish-tests | ||
scripts | ||
syntax | ||
.gitattributes | ||
.gitignore | ||
CHANGELOG.md | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
THIRD_PARTY | ||
codecov.yml | ||
netlify.toml | ||
requirements.txt | ||
runtime.txt | ||
rustfmt.toml |
README.md
✨ Features
- Simple and intuitive syntax inspired by EJS
- Include another template file inside template
- Built-in filters
- Minimal dependencies (<15 crates in total)
- Extremely fast (See benchmarks)
- Better error message
- Syntax highlighting support (vscode, vim)
- Works on Rust 1.60 or later
🐟 Example
Dependencies:
[dependencies]
sailfish = "0.8.3"
Template file (templates/hello.stpl):
<html>
<body>
<% for msg in &messages { %>
<div><%\html msg %></div>
<% } %>
</body>
</html>
Code:
use sailfish::RenderOnce;
#[derive(RenderOnce)]
#[template(path = "hello.stpl")]
struct HelloTemplate {
messages: Vec<String>
}
fn main() {
let ctx = HelloTemplate {
messages: vec![String::from("foo"), String::from("bar")],
};
println!("{}", ctx.render_once().unwrap());
}
You can find more examples in examples directory.
🐾 Roadmap
Render
derive macro (RFC)- Template inheritance (block, partials, etc.)
👤 Author
🇯🇵 Ryohei Machida
- GitHub: @Kogia-sima
🤝 Contributing
Contributions, issues and feature requests are welcome!
Since sailfish is an immature library, there are many planned features that is on a stage of RFC. Please leave a comment if you have an idea about its design!
Also I welcome any pull requests to improve sailfish! Find issues with Status: PR Welcome label, and let's create a new pull request!
Show your support
Give a ⭐️ if this project helped you!
📝 License
Copyright © 2020 Ryohei Machida.
This project is MIT licensed.
This README was generated with ❤️ by readme-md-generator