aboutsummaryrefslogtreecommitdiff
path: root/mingling_picker_macros/src/lib.rs
blob: fe1b53cb00ee1533970bae7e8f31fe666ca9f9fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use proc_macro::TokenStream;

mod flag;
mod internal_repeat;

/// Core proc-macro: repeats a template body `count` times.
///
/// Internal call signature: `internal_repeat!(count => { template })`
#[proc_macro]
pub fn internal_repeat(input: TokenStream) -> TokenStream {
    internal_repeat::internal_repeat(input)
}

/// Quick builder for `PickerFlag`.
///
/// # Syntax
///
/// ```ignore
/// use mingling_picker_macros::flag;
///
/// let basic = flag![name: String];
/// let with_short_name = flag![name: String, 'n'];
/// let with_short_alias = flag![name: String, 'n', "alias"];
/// let positional = flag![String];
/// let positional_with_name = flag![String, 'n', "alias"];
/// ```
#[proc_macro]
pub fn flag(input: TokenStream) -> TokenStream {
    flag::flag(input)
}