mirror of https://github.com/dnomd343/ClearDNS
Dnomd343
2 years ago
1 changed files with 43 additions and 0 deletions
@ -0,0 +1,43 @@ |
|||
use serde_json as json; |
|||
use serde_yaml as yaml; |
|||
|
|||
#[derive(Debug)] |
|||
pub enum Value { |
|||
JSON(json::Value), |
|||
YAML(yaml::Value), |
|||
TOML(toml::Value), |
|||
} |
|||
|
|||
fn json_parser(content: &str) -> Option<json::Value> { // parse json content
|
|||
match json::from_str::<json::Value>(content) { |
|||
Ok(result) => Some(result), |
|||
Err(_) => None, |
|||
} |
|||
} |
|||
|
|||
fn yaml_parser(content: &str) -> Option<yaml::Value> { // parse yaml content
|
|||
match yaml::from_str::<yaml::Value>(content) { |
|||
Ok(result) => Some(result), |
|||
Err(_) => None, |
|||
} |
|||
} |
|||
|
|||
fn toml_parser(content: &str) -> Option<toml::Value> { // parse toml content
|
|||
match toml::from_str::<toml::Value>(content) { |
|||
Ok(result) => Some(result), |
|||
Err(_) => None, |
|||
} |
|||
} |
|||
|
|||
pub fn parser(content: &str) -> Result<Value, String> { |
|||
match json_parser(content) { // try JSON format
|
|||
Some(data) => Ok(Value::JSON(data)), |
|||
None => match toml_parser(content) { // try TOML format
|
|||
Some(data) => Ok(Value::TOML(data)), |
|||
None => match yaml_parser(content) { // try YAML format
|
|||
Some(data) => Ok(Value::YAML(data)), |
|||
None => Err(String::from("unknown input format")), |
|||
} |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue