Crate bracket_parse[−][src]
Bracket Parse
A Utility for parsing Bracketed lists and sets of strings.
It is a relatively lazy way of parsing items from a bracketed string,
"hello(peter,dave)" is easy for it to handle, as are nested brackets.
The above will result in something like
Branch[Leaf("hello"),Branch[Leaf("peter"),Leaf("dave")]]
This is not intended super extensible right now, though contributions are welcome.
The list can also be constructed relatively simply by using chained builder type methods
use bracket_parse::{Bracket,br}; use bracket_parse::Bracket::{Leaf,Branch}; use std::str::FromStr; let str1 = Bracket::from_str("hello(peter,dave)").unwrap(); //Standard Build method let basic1 = Branch(vec![Leaf("hello".to_string()), Branch(vec![Leaf("peter".to_string()), Leaf("dave".to_string())])]); //Chaining Build method let chain1 = br().sib_lf("hello") .sib(br().sib_lf("peter").sib_lf("dave")); assert_eq!(str1,basic1); assert_eq!(str1,chain1);
It can also handle string input with escapes. Quotes are removed and the string item is considered a single Leaf value;
use bracket_parse::{Bracket,br,lf}; use std::str::FromStr; let bk = Bracket::from_str(r#""hello" 'matt"' "and \"friends\"""#).unwrap(); let chn = br().sib_lf("hello").sib_lf("matt\"").sib_lf("and \"friends\""); assert_eq!(bk,chn);
Re-exports
pub use tail::Tail; |
pub use iter::*; |
Modules
iter | |
tail |
Enums
Bracket |
Functions
br | |
lf |