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
mod string_repr;
mod uri_fragment;
use JsonPointer;
pub fn parse(s: &str) -> Result<JsonPointer<String, Vec<String>>, ParseError> {
if s.chars().next() == Some('#') {
let s = uri_fragment::UnescapeIter::new(s.chars().skip(1)).collect::<Result<String, _>>()?;
string_repr::parse(s.chars())
} else {
string_repr::parse(s.chars())
}
}
#[derive(Clone, Debug, PartialEq)]
pub enum ParseError {
InvalidEscape(String),
NoLeadingSlash,
}