From 09685646ae85bc01e94540b0cca8de4aa2f5fa49 Mon Sep 17 00:00:00 2001 From: Kogia-sima Date: Tue, 9 Jun 2020 21:19:59 +0900 Subject: [PATCH] Add documentation sources --- docs/en/docs/getting-started.md | 64 ++++++++++++++++++++++++++++++++ docs/en/docs/images/favicon.ico | Bin 0 -> 315214 bytes docs/en/docs/images/logo.svg | 39 +++++++++++++++++++ docs/en/docs/index.md | 35 +++++++++++++++++ docs/en/docs/installation.md | 13 +++++++ docs/en/docs/options.md | 30 +++++++++++++++ docs/en/docs/syntax/overview.md | 37 ++++++++++++++++++ docs/en/mkdocs.yml | 49 ++++++++++++++++++++++++ netlify.toml | 7 ++++ requirements.txt | 2 + runtime.txt | 1 + 11 files changed, 277 insertions(+) create mode 100644 docs/en/docs/getting-started.md create mode 100644 docs/en/docs/images/favicon.ico create mode 100644 docs/en/docs/images/logo.svg create mode 100644 docs/en/docs/index.md create mode 100644 docs/en/docs/installation.md create mode 100644 docs/en/docs/options.md create mode 100644 docs/en/docs/syntax/overview.md create mode 100644 docs/en/mkdocs.yml create mode 100644 netlify.toml create mode 100644 requirements.txt create mode 100644 runtime.txt diff --git a/docs/en/docs/getting-started.md b/docs/en/docs/getting-started.md new file mode 100644 index 0000000..fb8d387 --- /dev/null +++ b/docs/en/docs/getting-started.md @@ -0,0 +1,64 @@ +# Getting Started + +## Prepare the template file + +Create a new directory named `templates` in the same directory as `Cargo.toml`. Copy the following contents and paste it to a new file named `templates/hello.stpl`. + +```ejs + + + <% for msg in &messages { %> +
<%= msg %>
+ <% } %> + + +``` + +Now your project structure should be like this: + +```text +Cargo.toml +src/ + (Source files) +templates/ + hello.stpl +``` + +## Render the template + +Import the sailfish crates: + +```rust +#[macro_use] +extern crate sailfish_macros; // enable derive macros + +use sailfish::TemplateOnce; // import `TemplateOnce` trait +``` + +Define the template struct to be rendered: + +```rust +#[derive(TemplateOnce)] // automatically implement `TemplateOnce` trait +#[template(path = "hello.stpl")] // specify the path to template +struct HelloTemplate<'a> { + // data to be passed to the template + messages: &'a [String], +} +``` + +And render the data with `render_once()` method. + +```rust +fn main() { + let ctx = HelloTemplate { + messages: &[String::from("foo"), String::from("bar")]; + } + + // Now render templates with given data + println!("{}", ctx.render_once().unwrap()); +} +``` + +That's it! + +You can find more examples in the [example](https://github.com/Kogia-sima/sailfish/tree/master/examples) directory in the sailfish repository. diff --git a/docs/en/docs/images/favicon.ico b/docs/en/docs/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1113624975db35e27c06dd3dc730bb02e976054c GIT binary patch literal 315214 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 H#AXzj@NB0d9Y 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 + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/en/docs/index.md b/docs/en/docs/index.md new file mode 100644 index 0000000..f6df61f --- /dev/null +++ b/docs/en/docs/index.md @@ -0,0 +1,35 @@ +# Welcome to Sailfish Documentation! + +Sailfish is a simple, small, and extremely fast template engine for Rust. This documentation guides you how to get started with sailfish. + +This documentation mainly focuses on concepts of the library, general usage, and template syntax. If you've read this documentation and need more specific information, you might want to read the [sailfish API docs](https://docs.rs/sailfish). + +Currently the documentation is uncompleted. If you want to improve our documentation, feel free to create a [Pull Request](https://github.com/Kogia-sima/sailfish/pulls) on the repository. I'll be happy if someone contributes to writing documents (English is not my first language and creating a documentation is a hard task for me). + +## Why Sailfish ? + +There are many libraries for template rendering in Rust. Among those libraries, sailfish aims at **rapid development** and **rapid rendering**. Sailfish has many features that other libraries might not support. + +- Write a Rust code directly inside templates, supporting many Rust syntax (struct definision, closure, macro invocation, etc.) +- Relatively small number of dependencies (<15 crates in total) +- Extremely fast (See [benchmarks](http://github.com/Kogia-sima/sailfish/blob/master/benches)) +- Better error message +- Template rendering is always type-safe because templates are statically compiled. +- Syntax highlighting ([vscode](http://github.com/Kogia-sima/sailfish/blob/master/syntax/vscode), [vim](http://github.com/Kogia-sima/sailfish/blob/master/syntax/vim)) +- Automatically re-compile sources when template file is updated. + +## Upcoming features + +Since sailfish is on early stage of development, there are many upcoming features that is not supported yet. You can find many [RFC](https://github.com/Kogia-sima/sailfish/issues?q=is%3Aissue+is%3Aopen+label%3A%22Type%3A+RFC%22)s in my repository. These RFCs include: + +- Dynamic Template Loading +- Filter +- `Template` trait (which does not consume itself) + +If you have any idea about them or want to implement that feature, please send a comment on the issue! + +## License + +Copyright © 2020 Ryohei Machida + +This project is [MIT](https://github.com/Kogia-sima/sailfish/blob/master/LICENSE) licensed diff --git a/docs/en/docs/installation.md b/docs/en/docs/installation.md new file mode 100644 index 0000000..ed926c1 --- /dev/null +++ b/docs/en/docs/installation.md @@ -0,0 +1,13 @@ +# Installation + +In order to use sailfish templates, you have add two dependencies in your `Cargo.toml`. + +```toml +[dependencies] +sailfish = "0.0.3" +sailfish-macros = "0.0.3" +``` + +`sailfish` crate contains runtime for rendering contents, and `sailfish-macros` serves you derive macros to compile and import the template files. + +These crates are separated so that Rust compiler can compile them independently. This separation makes your compilation faster! diff --git a/docs/en/docs/options.md b/docs/en/docs/options.md new file mode 100644 index 0000000..72a3160 --- /dev/null +++ b/docs/en/docs/options.md @@ -0,0 +1,30 @@ +# Derive Options + +You can control the rendering behaviour via `template` attribute. + +```rust +#[derive(TemplateOnce)] +#[template(path = "template.stpl", escape = false)] +struct TemplateStruct { + ... +} +``` + +`template` attribute accepts the following options. + +- `path`: path to template file. This options is always required. +- `escape`: Enable HTML escaping (default: `false`) +- `delimiter`: Replace the '%' character used for the tag delimiter (default: '%') +- `rm_whitespace`: try to strip whitespaces as much as possible without collapsing HTML structure (default: `false`). This option might not work correctly if your templates have inline `script` tag. + +You can split the options into multiple `template` attributes. + +```rust +#[derive(TemplateOnce)] +#[template(path = "template.stpl")] +#[template(delimiter = '?')] +#[template(rm_whitespace = true)] +struct TemplateStruct { + ... +} +``` diff --git a/docs/en/docs/syntax/overview.md b/docs/en/docs/syntax/overview.md new file mode 100644 index 0000000..fde9f58 --- /dev/null +++ b/docs/en/docs/syntax/overview.md @@ -0,0 +1,37 @@ +# Template Syntax Overview + +## Tags + +- `<% %>`: Inline tag, you can write Rust code inside this tag +- `<%= %>`: Evaluate the Rust expression and outputs the value into the template (HTML escaped) +- `<%- %>`: Evaluate the Rust expression and outputs the unescaped value into the template +- `<%# %>`: Comment tag +- `<%%`: Outputs a literal '<%' + +## Condition + +```ejs +<% if messages.is_empty() { %> +

No messages
+<% } %> +``` + +## loop + +```ejs +<% for (i, msg) in messages.iter().enumerate() { %> +
<%= i %>: <%= msg %>
+<% } %> +``` + +## Includes + +```ejs +<% include!("path/to/template"); %> +``` + +Unlike EJS, you cannot omit the file extension. + +## Helpers + +(Work in progress) diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml new file mode 100644 index 0000000..f556c47 --- /dev/null +++ b/docs/en/mkdocs.yml @@ -0,0 +1,49 @@ +# Project information +site_name: 'Sailfish Documentation' +# site_description: 'Sailfish Documentation' +site_author: 'Ryohei Machida' +# site_url: 'https://***.com' + +# Copyright +copyright: '© 2020 Ryohei Machida' + +# Repository +repo_name: 'Kogia-sima/sailfish' +repo_url: 'https://github.com/Kogia-sima/sailfish' + +# Configuration +theme: + name: 'material' + language: 'en' + logo: 'images/logo.svg' + palette: + scheme: 'default' + primary: 'deep purple' + accent: 'deep purple' + favicon: 'images/favicon.ico' + font: + text: 'Ubuntu' + code: 'Ubuntu Mono' + +# Extensions +markdown_extensions: + - codehilite + - footnotes + +# Customization +# extra_css: +# - 'assets/css/custom.css' + +extra: + social: + - icon: 'fontawesome/brands/github-alt' + link: 'https://github.com/Kogia-sima' + +# Page tree +nav: + - 'Welcome': 'index.md' + - 'Installation': 'installation.md' + - 'Getting Started': 'getting-started.md' + - 'Options': 'options.md' + - 'Syntax': + - 'Overview': 'syntax/overview.md' diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..9eafdf1 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,7 @@ +[build] +command = "python3 scripts/build-docs.py" +publish = "site" + +[[redirects]] + from = "/*" + to = "/en/:splat" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3ef9d7d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +mkdocs-material==5.2.3 +mkdocs==1.1.2 diff --git a/runtime.txt b/runtime.txt new file mode 100644 index 0000000..d70c8f8 --- /dev/null +++ b/runtime.txt @@ -0,0 +1 @@ +3.6