handwritten_json/
lib.rs

1mod error;
2pub(crate) mod utilities;
3
4pub use error::{Error, Result};
5
6pub fn normalize(raw_input: &str) -> Result<String> {
7    let input = raw_input.trim();
8    if input.is_empty() {
9        Ok(String::with_capacity(0))
10    } else {
11        let mut chars = input.chars().peekable();
12        match chars.peek() {
13            Some('{') => {
14                let mut output = String::new();
15                utilities::parse_object(&mut output, &mut chars)?;
16                Ok(output)
17            }
18            Some('[') => {
19                let mut output = String::new();
20                utilities::parse_array(&mut output, &mut chars)?;
21                Ok(output)
22            }
23            _ => Ok(input.to_owned()),
24        }
25    }
26}