w-flo / sailfish

For pull requests only

Home Page:https://rust-sailfish.github.io/sailfish/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SailFish

Simple, small, and extremely fast template engine for Rust

Tests Version dependency status Rust 1.60 License: MIT

User Guide | API Docs | Examples

✨ 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.6.1"

Template file (templates/hello.stpl):

<html>
  <body>
    <% for msg in &messages { %>
      <div><%= msg %></div>
    <% } %>
  </body>
</html>

Code:

use sailfish::TemplateOnce;

#[derive(TemplateOnce)]
#[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

  • Template trait (RFC)
  • Template inheritance (block, partials, etc.)

πŸ‘€ Author

πŸ‡―πŸ‡΅ Ryohei Machida

🀝 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

About

For pull requests only

https://rust-sailfish.github.io/sailfish/

License:MIT License


Languages

Language:Rust 94.8%Language:Shell 2.0%Language:HTML 1.6%Language:Vim Script 1.0%Language:Python 0.5%