1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
//! A no-std string splitter for which spaces between //! quotes aren't separators. //! //! //! ``` //! use splitty::*; //! //! let cmd = "xterm -e \"vi /some/path\""; //! //! let mut token = split_unquoted_char(cmd, ' ') //! .unwrap_quotes(true); //! //! assert_eq!(token.next(), Some("xterm")); //! assert_eq!(token.next(), Some("-e")); //! assert_eq!(token.next(), Some("vi /some/path")); //! assert_eq!(token.next(), None); //! ``` //! //! Quotes not starting or ending a substring //! (ie with spaces or ends on the relevant side) //! are handled as ordinary characters. //! //! Splitty has a limited set of features but is tested for corner-cases: //! //! ``` //! use splitty::*; //! //! let cmd = r#" a "2 * 试" x"x "z "#; //! //! let mut token = split_unquoted_whitespace(cmd) //! .unwrap_quotes(true); //! //! assert_eq!(token.next(), Some("a")); //! assert_eq!(token.next(), Some("2 * 试")); //! assert_eq!(token.next(), Some("x\"x")); //! assert_eq!(token.next(), Some("\"z ")); //! assert_eq!(token.next(), None); //! ``` #![no_std] mod split_unquoted_char; pub use split_unquoted_char::*;