From 3e2a991c0e3133428d490399a04822b973c1d99d Mon Sep 17 00:00:00 2001 From: troido Date: Fri, 7 Feb 2020 15:29:36 +0100 Subject: templates can be loaded from json now --- src/parameter.rs | 16 +++++++++++++--- src/template.rs | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/parameter.rs b/src/parameter.rs index 3ae88cd..4b40c10 100644 --- a/src/parameter.rs +++ b/src/parameter.rs @@ -27,9 +27,19 @@ impl Parameter { } } -// pub fn from_json(val: &Value) -> Option { -// Self::from_typed_json(ParameterType::from_str(val.get(0)?.as_str()?)?, val.get(1)?) -// } + pub fn guess_from_json(val: &Value) -> Option { + let typ = + if val.is_string() { + ParameterType::String + } else if val.is_u64() || val.is_i64() { + ParameterType::Int + } else if val.is_f64() { + ParameterType::Float + } else { + return None + }; + Self::from_typed_json(typ, val.get(1)?) + } pub fn as_str(&self) -> Option<&str> { if let Self::String(str) = self { diff --git a/src/template.rs b/src/template.rs index b6b34cb..24e672b 100644 --- a/src/template.rs +++ b/src/template.rs @@ -1,6 +1,7 @@ use std::collections::HashMap; +use serde_json::{json, Value}; use crate::parameter::Parameter; #[derive(Debug)] @@ -24,4 +25,20 @@ impl Template { pub fn empty(name: &str) -> Self { Self::new(name, HashMap::new()) } + + pub fn from_json(val: Value) -> Option