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

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

#1376 in Parser implementations

Download history 11089/week @ 2024-08-14 10394/week @ 2024-08-21 10586/week @ 2024-08-28 11102/week @ 2024-09-04 11329/week @ 2024-09-11 9921/week @ 2024-09-18 10165/week @ 2024-09-25 8926/week @ 2024-10-02 9292/week @ 2024-10-09 10107/week @ 2024-10-16 10142/week @ 2024-10-23 10134/week @ 2024-10-30 9609/week @ 2024-11-06 8804/week @ 2024-11-13 8516/week @ 2024-11-20 6782/week @ 2024-11-27

35,576 downloads per month
Used in 46 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