From 1ceb4c6f23287bca98f0c3946d5678dce5d0457c Mon Sep 17 00:00:00 2001 From: troido Date: Wed, 1 Apr 2020 13:27:42 +0200 Subject: better time handling for growing plants --- src/assemblage.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/assemblage.rs') diff --git a/src/assemblage.rs b/src/assemblage.rs index 8e3a349..df60b45 100644 --- a/src/assemblage.rs +++ b/src/assemblage.rs @@ -31,11 +31,16 @@ impl Assemblage { let tup = arg.as_array().ok_or(aerr!("argument is not an array"))?; let key = tup.get(0).ok_or(aerr!("argument has no name"))?.as_str().ok_or(aerr!("argument name is not a string"))?.to_string(); let typ = ParameterType::from_str(tup.get(1).ok_or(aerr!("argument has no type"))?.as_str().ok_or(aerr!("argument type not a string"))?).ok_or(aerr!("failed to parse argument type"))?; - let def = tup.get(2).ok_or("argument has no default")?; - if def.is_null() { + if let Some(def) = tup.get(2){ + arguments.push( + ( + key.clone(), + typ, + Some(Parameter::from_typed_json(typ, def).ok_or(aerr!("invalid argument default"))?) + ) + ); + } else { arguments.push((key.clone(), typ, None)); - } else { - arguments.push((key.clone(), typ, Some(Parameter::from_typed_json(typ, def).ok_or(aerr!("invalid argument default"))?))); } } Ok(arguments) @@ -159,7 +164,7 @@ impl Assemblage { None } }; - let param = value.ok_or(aerr!("argument has no value"))?; + let param = value.ok_or(aerr!(&format!("argument <{:?}> has no value", (idx, (name, typ, def)))))?; if param.paramtype() != *typ { return Err(aerr!("argument has incorrect type")); } -- cgit