yarte_codegen/wasm/
mod.rs1#[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}