zng_app_proc_macros/
lib.rs
1#![doc(html_favicon_url = "https://raw.githubusercontent.com/zng-ui/zng/main/examples/image/res/zng-logo-icon.png")]
2#![doc(html_logo_url = "https://raw.githubusercontent.com/zng-ui/zng/main/examples/image/res/zng-logo.png")]
3#![doc = include_str!(concat!("../", std::env!("CARGO_PKG_README")))]
9#![warn(unused_extern_crates)]
10#![warn(missing_docs)]
11
12#[macro_use]
13extern crate quote;
14
15#[macro_use]
16extern crate lazy_static;
17
18use proc_macro::TokenStream;
19
20#[macro_use]
21mod util;
22
23mod property;
24mod ui_node;
25mod wgt_property_attrs;
26mod widget;
27mod widget_util;
28
29#[proc_macro_attribute]
35pub fn ui_node(args: TokenStream, input: TokenStream) -> TokenStream {
36 ui_node::gen_ui_node(args, input)
37}
38
39#[proc_macro_attribute]
45pub fn property(args: TokenStream, input: TokenStream) -> TokenStream {
46 property::expand(args, input)
47}
48
49#[doc(hidden)]
50#[proc_macro]
51pub fn property_meta(input: TokenStream) -> TokenStream {
52 property::expand_meta(input)
53}
54
55#[doc(hidden)]
56#[proc_macro]
57pub fn property_impl(input: TokenStream) -> TokenStream {
58 property::expand_impl(input)
59}
60
61#[proc_macro_attribute]
67pub fn widget(args: TokenStream, input: TokenStream) -> TokenStream {
68 widget::expand(args, input, false)
69}
70
71#[proc_macro_attribute]
77pub fn widget_mixin(args: TokenStream, input: TokenStream) -> TokenStream {
78 widget::expand(args, input, true)
79}
80
81#[proc_macro_attribute]
87pub fn easing(args: TokenStream, input: TokenStream) -> TokenStream {
88 wgt_property_attrs::expand_easing(args, input)
89}
90
91#[doc(hidden)]
92#[proc_macro]
93pub fn widget_new(input: TokenStream) -> TokenStream {
94 widget::expand_new(input)
95}
96
97#[doc(hidden)]
98#[proc_macro]
99pub fn trace(input: TokenStream) -> TokenStream {
100 eprintln!("{input}");
101 input
102}