1#[macro_use]
29extern crate syn;
30#[macro_use]
31extern crate quote;
32
33use html_non_recursive::HtmlNonRecursive;
34use proc_macro::TokenStream;
35
36mod assertions;
37mod attribute;
38mod attribute_ident;
39mod attributes;
40mod close_tag;
41mod element;
42mod html;
43mod html_non_recursive;
44mod item;
45mod open_tag;
46mod prelude;
47mod rsx_expr;
48
49#[proc_macro]
51pub fn html(input: TokenStream) -> TokenStream {
52 let html: HtmlNonRecursive = parse_macro_input!(input);
53 quote! {
54 dioxus::prelude::rsx! {
55 #html
56 }
57 }
58 .into()
59}
60
61#[cfg(test)]
62#[test]
63fn trybuild() {
64 let t = trybuild::TestCases::new();
65 t.compile_fail("test/tag/trailing.rs");
66 t.compile_fail("test/tag/extra_close.rs");
67 t.compile_fail("test/tag/missing_close.rs");
68
69 t.compile_fail("test/attribute/non_str_custom.rs");
70 t.compile_fail("test/attribute/format_str.rs");
71 t.compile_fail("test/attribute/missing_equals.rs");
72 t.compile_fail("test/attribute/random_expression.rs");
73 t.pass("test/attribute/passes.rs");
74
75 t.compile_fail("test/body/plain_text.rs");
76 t.pass("test/body/expression.rs");
77 t.pass("test/props/enum.rs");
78}