#shell #string #command #parser #parse #unicode-characters #command-line

comma

Shell-style command parser with support for escaping and quotations

4 releases (1 stable)

1.0.0 Aug 23, 2021
0.1.2 Aug 6, 2019
0.1.1 Aug 5, 2019
0.1.0 Aug 5, 2019

#1375 in Parser implementations

Download history 7133/week @ 2024-01-09 7831/week @ 2024-01-16 8490/week @ 2024-01-23 6209/week @ 2024-01-30 9127/week @ 2024-02-06 9611/week @ 2024-02-13 11139/week @ 2024-02-20 9366/week @ 2024-02-27 10913/week @ 2024-03-05 10044/week @ 2024-03-12 9030/week @ 2024-03-19 8259/week @ 2024-03-26 10403/week @ 2024-04-02 8323/week @ 2024-04-09 8687/week @ 2024-04-16 7937/week @ 2024-04-23

36,429 downloads per month
Used in 37 crates (7 directly)

MIT license

6KB
74 lines

comma

Crates.io docs.rs Build Status

comma splits shell-style commands, e.g. sendmsg joe "I say \"hi\" to you!", into a list of individual tokens. It correctly handles unicode characters, escape sequences, and single- or double-quoted strings.

Cargo

[dependencies]
comma = "1.0.0"

Usage

use comma::parse_command;

fn main () {
    let parsed = parse_command("sendmsg joe \"I say \\\"hi\\\" to you!\" 'but only\\ntoday'").unwrap();
    println!("Result: {:#?}", parsed); // Result: [ "sendmsg", "joe", "I say \"hi\" to you!", "but only\ntoday" ]
}

lib.rs:

comma parses command-line-style strings. See parse_command for details.

No runtime deps