mod value;
pub use value::{Fixes, Value};
mod parser;
pub use parser::{parse, ParseOptions};
mod to_serde;
pub use to_serde::jsonish_to_serde;
pub fn to_json_string(value: &Value) -> Result<String, serde_json::Error> {
let serde_value = jsonish_to_serde(value);
serde_json::to_string(&serde_value)
}
pub fn to_json_string_pretty(value: &Value) -> Result<String, serde_json::Error> {
let serde_value = jsonish_to_serde(value);
serde_json::to_string_pretty(&serde_value)
}
#[cfg(test)]
mod tests {
use super::{parse, to_json_string, ParseOptions};
#[test]
fn test_to_json_string_compact() {
let input = r#" Here is your json
```json
{naem:"Alice", age:30, extra:"remove me", yap:" noisy message "}
```
"#;
let value = parse(input, ParseOptions::default())
.expect("Parser should handle the errors and return a Value");
let json_output = to_json_string(&value).expect("to_json_string conversion should succeed");
let output_value: serde_json::Value = serde_json::from_str(&json_output).unwrap();
let expected_value: serde_json::Value = serde_json::from_str(
r#"{"age":30,"naem":"Alice","extra":"remove me","yap":" noisy message "}"#,
)
.unwrap();
assert_eq!(output_value, expected_value);
}
}