pjson_parser/
lib.rs

1mod parser;
2mod values;
3
4pub use parser::errors::ParserError;
5pub use values::Token;
6
7/// Parses the json string passed as parameter and returns a Result with the Token Enum type
8/// 
9/// # Examples
10/// Here is an example of parsing json containing an object
11/// 
12/// ```
13/// let result = parse_json(r#"{"a": 1}"#).unwrap();
14///    if let Token::Object(object) = result {
15///      assert_eq!(object.values.len(), 1);
16///    } else {
17///      panic!("Token parsed is not a Token::Object()");
18///    }
19/// ```
20pub fn parse_json(json_string: &str) -> Result<Token, ParserError> {
21  let mut parser = parser::JSONParser::new(json_string);
22  parser.parse()
23}
24
25#[cfg(test)]
26mod tests {
27  use super::parse_json;
28  use super::values::Token;
29
30  #[test]
31  fn test_parsing_works() {
32    let result = parse_json(r#"{"a": 1}"#).unwrap();
33    if let Token::Object(object) = result {
34      assert_eq!(object.values.len(), 1);
35    } else {
36      panic!("Token parsed is not a Token::Object()");
37    }
38  }
39
40  #[test]
41  fn test_parsing_fails_for_incorrect_value() {
42    let result = std::panic::catch_unwind(|| parse_json(r#"{a: 1}"#).unwrap());
43    assert!(result.is_err());
44  } 
45}