aboutsummaryrefslogtreecommitdiff
path: root/mingling_picker/src/builtin/pick_string.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-07-16 23:06:43 +0800
committer魏曹先生 <1992414357@qq.com>2026-07-16 23:06:43 +0800
commit7bf5ba795361f6abe9d591a2912816ed41a9760b (patch)
treecc4f4590f9e6eb9a765473a07967cbd9cad71643 /mingling_picker/src/builtin/pick_string.rs
parentc906c757aac0260594beb4c9efde4b0e199512ff (diff)
feat(parselib): introduce PositionalMatcher for positional-only args
Extract positional argument matching from ArgMatcher into a dedicated matcher that respects the `--` terminator and skips flag-like tokens before it. Add test suite covering basic, after-`--`, and Windows-style behaviour.
Diffstat (limited to 'mingling_picker/src/builtin/pick_string.rs')
-rw-r--r--mingling_picker/src/builtin/pick_string.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/mingling_picker/src/builtin/pick_string.rs b/mingling_picker/src/builtin/pick_string.rs
index f56571a..3363165 100644
--- a/mingling_picker/src/builtin/pick_string.rs
+++ b/mingling_picker/src/builtin/pick_string.rs
@@ -1,4 +1,4 @@
-use crate::parselib::{ArgMatcher, Matcher, ParserStyle};
+use crate::parselib::{ArgMatcher, Matcher, ParserStyle, PositionalMatcher};
use crate::pickable_needed::*;
impl<'a> Pickable<'a> for String {
@@ -8,7 +8,7 @@ impl<'a> Pickable<'a> for String {
fn tag(ctx: TagPhaseContext) -> Vec<usize> {
if ctx.arg_info.positional {
- ArgMatcher::match_one(ctx.into())
+ PositionalMatcher::match_one(ctx.into())
.map(|i| vec![i])
.unwrap_or_default()
} else {