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.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/mingling_picker_macros/src/lib.rs b/mingling_picker_macros/src/lib.rs
new file mode 100644
index 0000000..a12e3ed
--- /dev/null
+++ b/mingling_picker_macros/src/lib.rs
@@ -0,0 +1,32 @@
+#![doc = include_str!("../README.md")]
+
+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)
+}