winsplit

Crates.iowinsplit
lib.rswinsplit
version0.1.0
sourcesrc
created_at2022-08-04 17:32:45.818013
updated_at2022-08-04 17:32:45.818013
descriptionLibrary to split string into command line arguments mirroring CommandLineToArgV with VC++ 2008 parsing rules
homepagehttps://github.com/chipsenkbeil/winsplit-rs
repositoryhttps://github.com/chipsenkbeil/winsplit-rs
max_upload_size
id638834
size26,075
Chip Senkbeil (chipsenkbeil)

documentation

README

winsplit

Crates.io Docs CI

Like shell-words, but for Windows that somewhat mirrors CommandLineToArgvW, following VC++ 2008 parsing rules.

Written purely in Rust, so runs on any operating system! Windows is not a requirement!

Minimum tested Rust version is 1.56.1, but this may compile and work on earlier versions!

Installation

[Dependencies]
winsplit = "0.1"

If you want to use this without std library, this library can be compiled for use with alloc by disabling the std feature:

[Dependencies]
winsplit = { version = "0.1", default-features = false }

Usage

let args = winsplit::split(
    r#"C:\ProgramFiles\Example\example.exe --key "some value" arg1 arg2"#
);
assert_eq!(
    args, 
    &[
        r"C:\ProgramFiles\Example\example.exe",
        "--key",
        "some value",
        "arg1",
        "arg2"
    ]
);

Parsing Rules

This library follows the 2008 parsing rules for VC++ 9.9 (msvcr90.dll) that was released with Visual Studio 2008. See C/C++ parameter parsing rules for more details.

You can also check out the mirror of the rules and examples at the wiki documentation page for this repository.

Special Thanks

Goes to David Deley for documenting the complexities of the Windows parameter parsing logic and providing numerous examples found at https://daviddeley.com/autohotkey/parameters/parameters.htm.

License

This project is licensed under either of

Apache License, Version 2.0, (LICENSE-APACHE or apache-license) MIT license (LICENSE-MIT or mit-license) at your option.

Commit count: 13

cargo fmt