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}