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}