#![forbid(unsafe_code)]
#![deny(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]
#[cfg(feature = "components")]
mod component;
mod css;
mod internal_diagnostics;
mod js;
mod raw_text;
use proc_macro::TokenStream;
use syn::parse_macro_input;
#[proc_macro]
pub fn css(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as css::MacroInput);
css::expand(input)
}
#[proc_macro]
pub fn js(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as js::MacroInput);
js::expand(input)
}
#[proc_macro]
pub fn surreal_scope_inline(_input: TokenStream) -> TokenStream {
syn::Error::new(
proc_macro2::Span::call_site(),
"`surreal_scope_inline!()` is no longer part of the preferred story; use `mx::Init::new().surrealjs().scoped_css().build()` or `mx::Init::all()` instead",
)
.to_compile_error()
.into()
}
#[proc_macro]
pub fn signals_inline(_input: TokenStream) -> TokenStream {
syn::Error::new(
proc_macro2::Span::call_site(),
"`signals_inline!()` is no longer part of the preferred story; use `mx::Init::new().signals().build()` or `mx::Init::all()` instead",
)
.to_compile_error()
.into()
}
#[proc_macro]
pub fn surreal_scope_signals_inline(_input: TokenStream) -> TokenStream {
syn::Error::new(
proc_macro2::Span::call_site(),
"`surreal_scope_signals_inline!()` is no longer part of the preferred story; use `mx::Init::all()` instead",
)
.to_compile_error()
.into()
}
#[cfg(feature = "components")]
#[proc_macro_derive(Component, attributes(mx))]
pub fn component_derive(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as component::Input);
component::expand(input)
}
#[cfg(feature = "components")]
#[proc_macro_attribute]
pub fn component(_attr: TokenStream, _input: TokenStream) -> TokenStream {
syn::Error::new(
proc_macro2::Span::call_site(),
"`#[mx::component]` is no longer part of the component story; use explicit `fn css() -> Markup`, `fn js() -> Markup`, and a normal `impl Render` instead",
)
.to_compile_error()
.into()
}
#[cfg(feature = "components")]
#[proc_macro]
pub fn render(_input: TokenStream) -> TokenStream {
syn::Error::new(
proc_macro2::Span::call_site(),
"`render!` is no longer part of the component story; write a normal `impl Render` and place `(Self::css())` / `(Self::js())` explicitly in the markup",
)
.to_compile_error()
.into()
}