yarte_codegen/wasm/
mod.rs

1#[cfg(feature = "wasm-app")]
2pub mod client;
3#[cfg(all(feature = "wasm-server", feature = "bytes-buf", feature = "html-min"))]
4pub mod server {
5    use proc_macro2::TokenStream;
6
7    use yarte_dom::dom_fmt::to_wasmfmt;
8    use yarte_hir::{Struct, HIR};
9
10    use crate::{CodeGen, EachCodeGen, HTMLMinBytesCodeGen, IfElseCodeGen};
11
12    pub struct WASMCodeGen<'a> {
13        s: &'a Struct<'a>,
14        buf: &'a syn::Expr,
15    }
16
17    impl<'a> EachCodeGen for WASMCodeGen<'a> {}
18    impl<'a> IfElseCodeGen for WASMCodeGen<'a> {}
19
20    impl<'a> WASMCodeGen<'a> {
21        pub fn new<'n>(s: &'n Struct<'n>, buf: &'n syn::Expr) -> WASMCodeGen<'n> {
22            WASMCodeGen { s, buf }
23        }
24    }
25
26    impl<'a> CodeGen for WASMCodeGen<'a> {
27        fn gen(&mut self, ir: Vec<HIR>) -> TokenStream {
28            let ir = to_wasmfmt(ir, self.s).expect("html");
29            HTMLMinBytesCodeGen::new(self.buf).gen(ir)
30        }
31    }
32}