sunbeam_macro/lib.rs
1//! Sunbeam's css! macro.
2
3#![deny(missing_docs)]
4
5use sunbeam_ir::Classes;
6use syn::parse_macro_input;
7
8/// Create a CSS class string
9///
10/// ```
11/// # use sunbeam_macro::css;
12/// let classes = css!("mt1 mb5 p10");
13/// assert_eq!(classes, "mt1 mb5 p10")
14/// ```
15#[proc_macro]
16pub fn css(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
17 let input_fork = input.clone();
18
19 // Ensures that all of the classes are valid.
20 let _classes = parse_macro_input!(input_fork as Classes);
21
22 input
23}
24
25#[cfg(test)]
26mod ui_tests {
27 /// Verify that our macro's UI output matches our expectations.
28 #[test]
29 fn ui() {
30 let t = trybuild::TestCases::new();
31 t.compile_fail("tests/ui/*.rs");
32 }
33}