diff options
Diffstat (limited to 'mingling/src')
| -rw-r--r-- | mingling/src/parser/args.rs | 13 | ||||
| -rw-r--r-- | mingling/src/parser/picker.rs | 20 |
2 files changed, 33 insertions, 0 deletions
diff --git a/mingling/src/parser/args.rs b/mingling/src/parser/args.rs index 2a07e97..9c08d43 100644 --- a/mingling/src/parser/args.rs +++ b/mingling/src/parser/args.rs @@ -154,4 +154,17 @@ impl Argument { let new = Vec::new(); replace(&mut self.vec, new) } + + /// Removes all arguments that start with a dash ('-') + /// + /// This method filters out all command-line style flags from the arguments, + /// returning a new `Argument` instance containing only non-flag arguments. + pub fn strip_all_flags(mut self) -> Self { + self.vec = self + .vec + .into_iter() + .filter(|f| !f.starts_with('-')) + .collect(); + self + } } diff --git a/mingling/src/parser/picker.rs b/mingling/src/parser/picker.rs index 9258002..d69e27a 100644 --- a/mingling/src/parser/picker.rs +++ b/mingling/src/parser/picker.rs @@ -108,6 +108,16 @@ impl<R> Picker<R> { None => None, } } + + /// Applies an operation to the parsed arguments and returns the modified `Picker`. + /// + /// Takes a closure that receives the current `Argument` and returns a new `Argument`. + /// The returned `Argument` replaces the original arguments in the builder. + /// This method can be used to modify or transform the parsed arguments before extracting values. + pub fn operate_args<F: FnOnce(Argument) -> Argument>(mut self, operation: F) -> Self { + self.args = operation(self.args); + self + } } impl<T: Into<Argument>, G> From<T> for Picker<G> { @@ -189,6 +199,16 @@ macro_rules! define_pick_structs { self.$final_val = edit(self.$final_val); self } + + /// Applies an operation to the parsed arguments and returns the modified `Picker`. + /// + /// Takes a closure that receives the current `Argument` and returns a new `Argument`. + /// The returned `Argument` replaces the original arguments in the builder. + /// This method can be used to modify or transform the parsed arguments before extracting values. + pub fn operate_args<F: FnOnce(Argument) -> Argument>(mut self, operation: F) -> Self { + self.args = operation(self.args); + self + } } }; } |
