Skip to main content

parse_cmdline

Function parse_cmdline 

Source
pub fn parse_cmdline(input: &str) -> Option<ParsedCmdline>
Expand description

Parse a command-line string into name, bang, and args.

Grammar: [name][!] [arg1 arg2 ...]

Command names are alphabetic. Arguments start at the first non-alpha character after the name (or at whitespace). This allows vim-style commands like :s/pat/rep/ where there is no space between the command name and arguments.

Returns None for empty or whitespace-only input.

ยงExamples

use reovim_driver_command::parse_cmdline;

let parsed = parse_cmdline("w filename.txt").unwrap();
assert_eq!(parsed.name, "w");
assert!(!parsed.bang);
assert_eq!(parsed.args, vec!["filename.txt"]);
assert_eq!(parsed.raw_args, "filename.txt");

let parsed = parse_cmdline("q!").unwrap();
assert_eq!(parsed.name, "q");
assert!(parsed.bang);
assert!(parsed.args.is_empty());
assert!(parsed.raw_args.is_empty());

let parsed = parse_cmdline("s/foo/bar/g").unwrap();
assert_eq!(parsed.name, "s");
assert_eq!(parsed.raw_args, "/foo/bar/g");

assert!(parse_cmdline("").is_none());