Skip to content

Commit ec0a5a2

Browse files
authored
fix(flagset): recognize single dash as a positional arg (#13)
* test(flagset): add case for single dash position arg * fix(flagset): recognize single dash as positional arg
1 parent 6346d87 commit ec0a5a2

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/lib.rs

+15-2
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ impl FlagSet {
329329

330330
let mut av = args
331331
.into_iter()
332-
.flat_map(|arg| arg.chars().chain(" ".chars()))
332+
.flat_map(|arg| arg.trim_matches(' ').chars().chain(" ".chars()))
333333
.peekable();
334334

335335
loop {
@@ -344,7 +344,7 @@ impl FlagSet {
344344
'-' => {
345345
av.next();
346346
let arg = av.peek();
347-
if arg.is_none() {
347+
if arg.is_none() || *arg.unwrap() == ' ' {
348348
av.next();
349349
self.args.push("-".to_string());
350350
return Ok(());
@@ -974,6 +974,19 @@ mod tests {
974974
assert_eq!(args[1], "world");
975975
}
976976

977+
#[test]
978+
fn parse_single_dash_stdin() {
979+
let mut flags = FlagSet::new("test");
980+
981+
if let Err(err) = flags.parse(vec!["-"]) {
982+
panic!(err);
983+
}
984+
985+
let args = flags.args();
986+
assert_eq!(args.len(), 1);
987+
assert_eq!(args[0], "-");
988+
}
989+
977990
#[test]
978991
fn parse_terminate_flags() {
979992
let mut flags = FlagSet::new("test");

0 commit comments

Comments
 (0)