summaryrefslogtreecommitdiff
path: root/src/componentparameter.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-05-21 15:26:12 +0200
committertroido <troido@protonmail.com>2020-06-05 22:27:54 +0200
commit1899b27b791734a6b72e28cfb1420536c6035ee4 (patch)
treecbb908f05c1daa1c9fb996d474a34f0b6f4aba76 /src/componentparameter.rs
parentf47034bdf86e7ddc831ecb8f50689b9b07a0f6ca (diff)
added exchanger as seperate component/system; refactored other interactions; parameter parsing returns result instead of option
Diffstat (limited to 'src/componentparameter.rs')
-rw-r--r--src/componentparameter.rs6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/componentparameter.rs b/src/componentparameter.rs
index 30a7d91..08c3244 100644
--- a/src/componentparameter.rs
+++ b/src/componentparameter.rs
@@ -76,14 +76,12 @@ impl ComponentParameter {
pub fn from_json(value: &Value) -> PResult<Self> {
if !value.is_array() {
- return Ok(Self::Constant(Parameter::guess_from_json(value).ok_or(perr!("invalid component parameter {:?}", value))?));
+ return Ok(Self::Constant(Parameter::guess_from_json(value)?));
}
let paramvalue = value.get(1).ok_or(perr!("index 1 not in component parameter"))?;
let typename = value.get(0).ok_or(perr!("index 0 not in component parameter"))?.as_str().ok_or(perr!("compparam type not a string"))?;
if let Some(paramtype) = ParameterType::from_str(typename) {
- Ok(Self::Constant(Parameter::from_typed_json(paramtype, paramvalue).ok_or_else(||
- perr!("failed to parse parameter constant: {:?} {:?}", paramtype, paramvalue)
- )?))
+ Ok(Self::Constant(Parameter::from_typed_json(paramtype, paramvalue)?))
} else {
match typename {
"A" | "arg" => {