Cleanup parsing of single char options

This commit is contained in:
Kovid Goyal 2023-03-05 14:22:53 +05:30
parent 23d2293296
commit db972f3442
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 17 additions and 7 deletions

View File

@ -235,19 +235,26 @@ func parse_args(args ...string) (delegate_to_rg bool, sanitized_args []string, k
}
}
} else if strings.HasPrefix(x, "-") {
sanitized_args = append(sanitized_args, x)
for _, ch := range x[1 : len(x)-1] {
target := alias_map[string(ch)]
if target != "" {
handle_bool_option(target)
ok := true
chars := make([]string, len(x)-1)
for i, ch := range x[1:] {
chars[i] = string(ch)
_, ok = alias_map[string(ch)]
if !ok {
break
}
}
target := alias_map[string(rune(x[len(x)-1]))]
if target != "" {
if !ok {
sanitized_args = append(sanitized_args, x)
continue
}
for _, ch := range chars {
target := alias_map[ch]
if options_that_expect_args[target] {
expecting_option_arg = target
} else {
handle_bool_option(target)
sanitized_args = append(sanitized_args, "-"+ch)
}
}
} else {

View File

@ -86,5 +86,8 @@ func TestRgArgParsing(t *testing.T) {
}
check_args("--count --max-depth 10 --XxX yyy abcd", "--count --max-depth 10 --XxX yyy abcd")
check_args("--max-depth=10 --kitten hyperlink=none abcd", "--max-depth=10 abcd")
check_args("-m 10 abcd", "--max-count 10 abcd")
check_args("-nm 10 abcd", "-n --max-count 10 abcd")
check_args("-mn 10 abcd", "-n --max-count 10 abcd")
}