File: README.md

package info (click to toggle)
rust-sailfish-macros 0.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 72 kB
  • sloc: makefile: 4
file content (139 lines) | stat: -rwxr-xr-x 3,711 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<div align="center">

![SailFish](./resources/logo.png)

Simple, small, and extremely fast template engine for Rust

![Tests](https://github.com/rust-sailfish/sailfish/workflows/Tests/badge.svg)![Version](https://img.shields.io/crates/v/sailfish)![dependency status](https://deps.rs/repo/github/rust-sailfish/sailfish/status.svg)![Rust 1.60](https://img.shields.io/badge/rust-1.60+-lightgray.svg)![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)

[User Guide](https://rust-sailfish.github.io/sailfish/) | [API Docs](https://docs.rs/sailfish) | [Examples](./examples)

</div>

## ✨ Features

- Simple and intuitive syntax inspired by [EJS](https://ejs.co/)
- Include another template file inside template
- Built-in filters
- Minimal dependencies (<15 crates in total)
- Extremely fast (See [benchmarks](https://github.com/djc/template-benchmarks-rs))
- Better error message
- Syntax highlighting support ([vscode](./syntax/vscode), [vim](./syntax/vim))
- Works on Rust 1.60 or later

## 🐟 Example

Dependencies:

```toml
[dependencies]
sailfish = "0.9.0"
```

You can choose to use `TemplateSimple` to access fields directly:

> Template file (templates/hello.stpl):
>
> ```erb
> <html>
>   <body>
>     <% for msg in messages { %>
>       <div><%= msg %></div>
>     <% } %>
>   </body>
> </html>
> ```
>
> Code:
>
> ```rust
> use sailfish::TemplateSimple;
> 
> #[derive(TemplateSimple)]
> #[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());
> }
> ```

Or use the more powerful `Template/TemplateMut/TemplateOnce`:

> Template file (templates/hello.stpl):
>
> ```erb
> <html>
>   <body>
>     <% for msg in &self.messages { %>
>       <div><%= msg %></div>
>     <% } %>
>     <div><%= self.say_hello() %></div>
>   </body>
> </html>
> ```
>
> Code:
>
> ```rust
> use sailfish::Template;
> 
> #[derive(Template)]
> #[template(path = "hello.stpl")]
> struct HelloTemplate {
>     messages: Vec<String>
> }
> 
> impl HelloTemplate {
>     fn say_hello(&self) -> String {
>         String::from("Hello!")
>     }
> }
> 
> fn main() {
>     let ctx = HelloTemplate {
>         messages: vec![String::from("foo"), String::from("bar")],
>     };
>     println!("{}", ctx.render().unwrap());
> }
> ```

You can find more examples in [examples](./examples) directory.

## 🐾 Roadmap

- `Template` trait ([RFC](https://github.com/rust-sailfish/sailfish/issues/3))
- Template inheritance (block, partials, etc.)

## 👤 Author

🇯🇵 **Ryohei Machida**

* GitHub: [@Kogia-sima](https://github.com/Kogia-sima)

## 🤝 Contributing

Contributions, issues and feature requests are welcome!

Since sailfish is an immature library, there are many [planned features](https://github.com/rust-sailfish/sailfish/labels/Type%3A%20RFC) 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](https://github.com/rust-sailfish/sailfish/issues?q=is%3Aissue+is%3Aopen+label%3A%22Status%3A+PR+Welcome%22) label, and [let's create a new pull request](https://github.com/rust-sailfish/sailfish/pulls)!

## 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/rust-sailfish/sailfish/blob/master/LICENSE) licensed.

---

*This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)*