diff --git a/src/to-json/src/convert.rs b/src/to-json/src/convert.rs new file mode 100644 index 0000000..55f9e91 --- /dev/null +++ b/src/to-json/src/convert.rs @@ -0,0 +1,21 @@ +use serde_json as json; +use crate::parser::{parser, Value}; + +fn json_convert(content: &str) -> Result { // convert to JSON format + let data = match parser(content)? { + Value::JSON(_json) => json::to_string(&_json), + Value::YAML(_yaml) => json::to_string(&_yaml), + Value::TOML(_toml) => json::to_string(&_toml), + }; + match data { + Ok(data) => Ok(data), + Err(err) => Err(err.to_string()), + } +} + +pub fn to_json(content: &str) -> Option { // to JSON string + match json_convert(content) { + Ok(data) => Some(data), + Err(_) => None, + } +} diff --git a/src/to-json/src/lib.rs b/src/to-json/src/lib.rs index 4f1b9a0..ce4d1e6 100644 --- a/src/to-json/src/lib.rs +++ b/src/to-json/src/lib.rs @@ -1,2 +1,4 @@ mod ffi; mod json; +mod parser; +mod convert;