tuxtui_macros/
lib.rs

1//! # tuxtui-macros
2//!
3//! Procedural macros for the tuxtui TUI library.
4//!
5//! This crate provides convenience macros for common operations in tuxtui.
6//!
7//! ## Macros
8//!
9//! - `border!`: Create border configurations easily
10//!
11//! ## Example
12//!
13//! ```ignore
14//! use tuxtui_macros::border;
15//!
16//! let borders = border!(All);
17//! ```
18
19#![forbid(unsafe_code)]
20#![warn(missing_docs)]
21
22use proc_macro::TokenStream;
23use quote::quote;
24use syn::{Ident, parse_macro_input};
25
26/// Create a border configuration.
27///
28/// # Example
29///
30/// ```ignore
31/// use tuxtui_macros::border;
32///
33/// let borders = border!(All);
34/// let borders = border!(Top | Bottom);
35/// ```
36#[proc_macro]
37pub fn border(input: TokenStream) -> TokenStream {
38    let ident = parse_macro_input!(input as Ident);
39
40    let expanded = quote! {
41        tuxtui::widgets::block::BorderType::#ident
42    };
43
44    TokenStream::from(expanded)
45}
46
47/// Derive macro for creating styled components (placeholder for future expansion).
48#[proc_macro_derive(Styled)]
49pub fn derive_styled(_input: TokenStream) -> TokenStream {
50    TokenStream::new()
51}