James Farrell | 427efb7 | 2024-09-30 22:59:14 +0000 | [diff] [blame] | 1 | [![ci badge]][ci link] [![crates.io badge]][crates.io link] [![docs.rs badge]][docs.rs link] |
| 2 | |
| 3 | [crates.io badge]: https://img.shields.io/crates/v/shlex.svg?style=flat-square |
| 4 | [crates.io link]: https://crates.io/crates/shlex |
| 5 | [docs.rs badge]: https://img.shields.io/badge/docs-online-dddddd.svg?style=flat-square |
| 6 | [docs.rs link]: https://docs.rs/shlex |
| 7 | [ci badge]: https://img.shields.io/github/actions/workflow/status/comex/rust-shlex/test.yml?branch=master&style=flat-square |
| 8 | [ci link]: https://github.com/comex/rust-shlex/actions |
| 9 | |
| 10 | Same idea as (but implementation not directly based on) the Python shlex |
| 11 | module. However, this implementation does not support any of the Python |
| 12 | module's customization because it makes parsing slower and is fairly useless. |
| 13 | You only get the default settings of shlex.split, which mimic the POSIX shell: |
| 14 | <https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html> |
| 15 | |
| 16 | This implementation also deviates from the Python version in not treating \r |
| 17 | specially, which I believe is more compliant. |
| 18 | |
| 19 | This crate can be used on either normal Rust strings, or on byte strings with |
| 20 | the `bytes` module. The algorithms used are oblivious to UTF-8 high bytes, so |
| 21 | internally they all work on bytes directly as a micro-optimization. |
| 22 | |
| 23 | Disabling the `std` feature (which is enabled by default) will allow the crate |
| 24 | to work in `no_std` environments, where the `alloc` crate, and a global |
| 25 | allocator, are available. |
| 26 | |
| 27 | # LICENSE |
| 28 | |
| 29 | The source code in this repository is Licensed under either of |
| 30 | - Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or |
| 31 | https://www.apache.org/licenses/LICENSE-2.0) |
| 32 | - MIT license ([LICENSE-MIT](LICENSE-MIT) or |
| 33 | https://opensource.org/licenses/MIT) |
| 34 | |
| 35 | at your option. |
| 36 | |
| 37 | Unless you explicitly state otherwise, any contribution intentionally submitted |
| 38 | for inclusion in the work by you, as defined in the Apache-2.0 license, shall |
| 39 | be dual licensed as above, without any additional terms or conditions. |