4c95b9e6
—
Peter John 3 years ago
v0.3.3
- Cargo.lock +2 -2
- Cargo.toml +2 -2
- impl/Cargo.lock +1 -1
- impl/Cargo.toml +1 -1
- impl/src/lib.rs +6 -1
- src/lib.rs +18 -0
- tests/lib.rs +9 -6
Cargo.lock
CHANGED
|
@@ -1465,7 +1465,7 @@ dependencies = [
|
|
|
1465
1465
|
|
|
1466
1466
|
[[package]]
|
|
1467
1467
|
name = "tide-jsx"
|
|
1468
|
-
version = "0.3.
|
|
1468
|
+
version = "0.3.2"
|
|
1469
1469
|
dependencies = [
|
|
1470
1470
|
"async-std",
|
|
1471
1471
|
"pretty_assertions",
|
|
@@ -1476,7 +1476,7 @@ dependencies = [
|
|
|
1476
1476
|
|
|
1477
1477
|
[[package]]
|
|
1478
1478
|
name = "tide-jsx-impl"
|
|
1479
|
-
version = "0.2.
|
|
1479
|
+
version = "0.2.1"
|
|
1480
1480
|
dependencies = [
|
|
1481
1481
|
"proc-macro-error",
|
|
1482
1482
|
"proc-macro2",
|
Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "tide-jsx"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.3"
|
|
4
4
|
authors = ["pyrossh", "Gal Schlezinger <gal@spitfire.co.il>"]
|
|
5
5
|
edition = "2021"
|
|
6
6
|
description = "A safe and simple template engine with the ergonomics of JSX"
|
|
@@ -12,7 +12,7 @@ license = "MIT"
|
|
|
12
12
|
|
|
13
13
|
[dependencies]
|
|
14
14
|
tide = "0.16.0"
|
|
15
|
-
tide-jsx-impl = { path = "impl", version = "0.2.
|
|
15
|
+
tide-jsx-impl = { path = "impl", version = "0.2.2" }
|
|
16
16
|
|
|
17
17
|
[dev-dependencies]
|
|
18
18
|
pretty_assertions = "0.6"
|
impl/Cargo.lock
CHANGED
|
@@ -103,7 +103,7 @@ dependencies = [
|
|
|
103
103
|
|
|
104
104
|
[[package]]
|
|
105
105
|
name = "tide-jsx-impl"
|
|
106
|
-
version = "0.2.
|
|
106
|
+
version = "0.2.1"
|
|
107
107
|
dependencies = [
|
|
108
108
|
"pretty_assertions",
|
|
109
109
|
"proc-macro-error",
|
impl/Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "tide-jsx-impl"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.2"
|
|
4
4
|
authors = ["pyrossh", "Gal Schlezinger <gal@spitfire.co.il>"]
|
|
5
5
|
edition = "2021"
|
|
6
6
|
description = "The macros needed for `render`"
|
impl/src/lib.rs
CHANGED
|
@@ -35,7 +35,12 @@ pub fn rsx(input: TokenStream) -> TokenStream {
|
|
|
35
35
|
#[proc_macro_error]
|
|
36
36
|
pub fn view(input: TokenStream) -> TokenStream {
|
|
37
37
|
let el = parse_macro_input!(input as Element);
|
|
38
|
-
let result = quote! {
|
|
38
|
+
let result = quote! {
|
|
39
|
+
::tide::Response::builder(StatusCode::Ok)
|
|
40
|
+
.content_type(::tide::http::mime::HTML)
|
|
41
|
+
.body(#el.render())
|
|
42
|
+
.build()
|
|
43
|
+
};
|
|
39
44
|
TokenStream::from(result)
|
|
40
45
|
}
|
|
41
46
|
|
src/lib.rs
CHANGED
|
@@ -27,3 +27,21 @@ impl<'a, T: Render> From<SimpleElement<'a, T>> for tide::Result {
|
|
|
27
27
|
Ok(s.into())
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
+
|
|
31
|
+
impl<T: Render> From<Fragment<T>> for tide::Response {
|
|
32
|
+
fn from(s: Fragment<T>) -> Self {
|
|
33
|
+
tide::Response::builder(StatusCode::Ok)
|
|
34
|
+
.content_type(mime::HTML)
|
|
35
|
+
.body(s.render())
|
|
36
|
+
.build()
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
impl<T: Render> From<Fragment<T>> for tide::Result {
|
|
41
|
+
fn from(s: Fragment<T>) -> Self {
|
|
42
|
+
Ok(s.into())
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
tests/lib.rs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
use pretty_assertions::assert_eq;
|
|
2
2
|
use tide::StatusCode;
|
|
3
|
-
use tide_jsx::{html, rsx, view, component, Render, raw
|
|
3
|
+
use tide_jsx::{html, rsx, view, component, Render, raw};
|
|
4
4
|
use tide_jsx::html::HTML5Doctype;
|
|
5
5
|
use std::borrow::Cow;
|
|
6
6
|
|
|
@@ -151,11 +151,14 @@ fn vec() {
|
|
|
151
151
|
)
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
#[async_std::test]
|
|
155
|
-
|
|
155
|
+
async fn render_view() -> std::io::Result<()> {
|
|
156
|
-
|
|
156
|
+
let mut res = view! { <p>{"hello"}</p> };
|
|
157
|
-
|
|
157
|
+
assert_eq!(res.status(), StatusCode::Ok);
|
|
158
|
+
assert_eq!(res.header("content-type").unwrap().as_str(), tide::http::mime::HTML.to_string());
|
|
159
|
+
assert_eq!(res.take_body().into_string().await.unwrap(), "<p>hello</p>");
|
|
158
|
-
|
|
160
|
+
Ok(())
|
|
161
|
+
}
|
|
159
162
|
|
|
160
163
|
mod kaki {
|
|
161
164
|
use crate::{html, rsx, component, HTML5Doctype, Render};
|