ribir_macros 0.4.0-alpha.41

A non-intrusive declarative GUI framework, to build modern native/wasm cross-platform applications.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use proc_macro2::TokenStream;
use quote::quote_spanned;
use syn::spanned::Spanned;

use crate::{error::result_to_token_stream, symbol_process::*, watch_macro::*};

pub fn gen_code(input: TokenStream, refs_ctx: Option<&mut DollarRefsCtx>) -> TokenStream {
  let span = input.span();
  let res = process_watch_body(input, refs_ctx).map(|WatchBody { upstream, map_handler }| {
    quote_spanned! {span =>
      Pipe::new(#upstream.box_it(), #map_handler)
        .transform(|s| s.distinct_until_changed().box_it())
    }
  });
  result_to_token_stream(res)
}