aboutsummaryrefslogtreecommitdiff
path: root/mingling_picker_macros/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_picker_macros/src/lib.rs')
-rw-r--r--mingling_picker_macros/src/lib.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/mingling_picker_macros/src/lib.rs b/mingling_picker_macros/src/lib.rs
index 8b13789..33bb67d 100644
--- a/mingling_picker_macros/src/lib.rs
+++ b/mingling_picker_macros/src/lib.rs
@@ -1 +1,30 @@
+use proc_macro::TokenStream;
+mod arg;
+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 `PickerArg`.
+///
+/// # Syntax
+///
+/// ```ignore
+/// use mingling_picker_macros::flag;
+///
+/// let basic = arg![name: String];
+/// let with_short_name = arg![name: String, 'n'];
+/// let with_short_alias = arg![name: String, 'n', "alias"];
+/// let positional = arg![String];
+/// let positional_with_name = arg![String, 'n', "alias"];
+/// ```
+#[proc_macro]
+pub fn arg(input: TokenStream) -> TokenStream {
+ arg::arg(input)
+}