sailfish/README.md

103 lines
2.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div align="center">
![SailFish](./resources/logo.png)
Simple, small, and extremely fast template engine for Rust
[![Build Status](https://travis-ci.org/Kogia-sima/sailfish.svg?branch=master)](https://travis-ci.org/Kogia-sima/sailfish)
[![Build status](https://ci.appveyor.com/api/projects/status/fa3et4rft4dyvdn9/branch/master?svg=true)](https://ci.appveyor.com/project/Kogiasima/sailfish/branch/master)
[![Version](https://img.shields.io/crates/v/sailfish)](https://crates.io/crates/sailfish)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/Kogia-sima/sailfish/blob/master/LICENSE)
[User Guide](https://sailfish.netlify.app/en/) | [API Docs](https://docs.rs/sailfish) | [Examples](./examples)
</div>
## ✨ Features
- Simple and intuitive syntax inspired by [EJS](https://ejs.co/)
- Relatively small number of dependencies (<15 crates in total)
- Extremely fast (See [benchmarks](./benches/README.md))
- Better error message
- Template rendering is always type-safe because templates are statically compiled.
- Syntax highlighting support ([vscode](./syntax/vscode), [vim](./syntax/vim))
- Automatically re-compile sources when template file is updated.
- Works on Rust 1.42 or later
## 🐟 Example
Dependencies:
```toml
[dependencies]
sailfish = "0.1.1"
sailfish-macros = "0.1.1"
```
Template file (templates/hello.stpl):
```erb
<DOCTYPE! html>
<html>
<body>
<%= content %>
</body>
</html>
```
Code:
```rust
#[macro_use]
extern crate sailfish_macros; // enable derive macro
use sailfish::TemplateOnce;
#[derive(TemplateOnce)]
#[template(path = "hello.stpl")]
struct Hello {
content: String
}
fn main() {
println!("{}", Hello { content: String::from("Hello, world!") }.render_once().unwrap());
}
```
You can find more examples in [examples](./examples) directory.
## 🐾 Roadmap
- `Template` trait ([RFC](https://github.com/Kogia-sima/sailfish/issues/3))
- Template inheritance (block, partials, etc.)
- Whitespace suppressing
- Filters ([RFC](https://github.com/Kogia-sima/sailfish/issues/2))
- Dynamic template compilation ([RFC](https://github.com/Kogia-sima/sailfish/issues/1))
- `format_templates!(fmt, args..)` macro
## 👤 Author
:jp: **Ryohei Machida**
* Github: [@Kogia-sima](https://github.com/Kogia-sima)
## 🤝 Contributing
Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/Kogia-sima/sailfish/issues).
## Show your support
Give a if this project helped you!
## 📝 License
Copyright © 2020 [Ryohei Machida](https://github.com/Kogia-sima).
This project is [MIT](https://github.com/Kogia-sima/sailfish/blob/master/LICENSE) licensed.
***
_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_