1
0
mirror of https://github.com/actix/examples synced 2025-02-17 07:23:29 +01:00

Update yarte version to 0.6.0 and his templates with partial block and html minifier new features (#251)

This commit is contained in:
Juan Aguilar 2020-02-06 18:19:04 +01:00 committed by GitHub
parent 443b8197ed
commit 7198fa31e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 84 additions and 28 deletions

View File

@ -10,10 +10,10 @@ workspace = ".."
[dependencies]
env_logger = "0.7"
yarte = { version = "0.5", features = ["with-actix-web"] }
yarte = { version = "0.6", features = ["with-actix-web"] }
actix-rt = "1.0"
actix-web = "2.0.0"
[build-dependencies]
yarte = { version = "0.5", features = ["with-actix-web"] }
yarte = { version = "0.6", features = ["with-actix-web"] }

View File

@ -10,3 +10,59 @@ cargo test
cargo run
```
> open `localhost:8080`
## Generated code
```rust
impl ::std::fmt::Display for IndexTemplate {
fn fmt(&self, _fmt: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
_fmt.write_str(
"<!DOCTYPE html><html><head><meta charset=\"utf-8\" /><title>Actix \
web</title></head><body>",
)?;
if let Some(name__0) = self.query.get("name") {
let lastname__1 = self.query.get("lastname").ok_or(yarte::Error)?;
_fmt.write_str("<h1>Hi, ")?;
::yarte::Render::render(&(name__0), _fmt)?;
_fmt.write_str(" ")?;
::yarte::Render::render(&(lastname__1), _fmt)?;
_fmt.write_str("!</h1><p id=\"hi\" class=\"welcome\">Welcome</p>")?;
} else {
_fmt.write_str(
"<h1 id=\"welcome\" class=\"welcome\">Welcome!</h1><div><h3>What is your \
name?</h3><form>Name: <input type=\"text\" name=\"name\" /><br/>Last name: \
<input type=\"text\" name=\"lastname\" /><br/><p><input \
type=\"submit\"></p></form></div>",
)?;
}
_fmt.write_str("</body></html>")?;
Ok(())
}
}
impl ::yarte::Template for IndexTemplate {
fn mime() -> &'static str {
"text/html; charset=utf-8"
}
fn size_hint() -> usize {
838usize
}
}
impl ::yarte::aw::Responder for IndexTemplate {
type Error = ::yarte::aw::Error;
type Future = ::yarte::aw::Ready<::std::result::Result<::yarte::aw::HttpResponse, Self::Error>>;
#[inline]
fn respond_to(self, _req: &::yarte::aw::HttpRequest) -> Self::Future {
match self.call() {
Ok(body) => ::yarte::aw::ok(
::yarte::aw::HttpResponse::Ok()
.content_type(Self::mime())
.body(body),
),
Err(_) => ::yarte::aw::err(::yarte::aw::ErrorInternalServerError("Some error message")),
}
}
}
```

View File

@ -0,0 +1,8 @@
{{! Simple example !}}
{{> doc/t }}
<html>
{{> doc/head }}
<body>
{{> @partial-block }}
</body>
</html>

View File

@ -1,10 +0,0 @@
<body>
{{~#if let Some(name) = query.get("name") }}
{{ let lastname = query.get("lastname").ok_or(yarte::Error)? }}
{{> card/hi ~}}
{{ else ~}}
{{> card/form ~}}
{{/if ~}}
</body>

View File

@ -9,12 +9,11 @@
{{! Form !}}
<form>
{{! Input name !}}
Name: <input type="text" name="name" />
Name: <input type="text" name="name" /><br/>
{{! Input last name !}}
<br/>Last name: <input type="text" name="lastname" />
{{! Submit !}}
<br/><p><input type="submit"></p></form>
{{! Order and remove whitespace with comments !}}
Last name: <input type="text" name="lastname"/><br/>
<p>
<input type="submit">
</p>
</form>
</div>

View File

@ -1 +1,4 @@
<head><meta charset="utf-8" /><title>{{ title }}</title></head>
<head>
<meta charset="utf-8"/>
<title>{{ title }}</title>
</head>

View File

@ -1,8 +1,8 @@
{{! Simple example !}}
{{> doc/t ~}}
<html>
{{~> doc/head title = "Actix web" }}
{{~> body ~}}
</html>
{{#> base title = "Actix web" }}
{{~#if let Some(name) = query.get("name") }}
{{ let lastname = query.get("lastname").ok_or(yarte::Error)? }}
{{> card/hi ~}}
{{ else ~}}
{{> card/form ~}}
{{/if ~}}
{{/base }}