(value: &str, line_no: usize)
| 24 | } |
| 25 | |
| 26 | fn parse_set_var(value: &str, line_no: usize) -> Result<AnimationEvent, String> { |
| 27 | let value = parse_scene_value_with_refs(value, line_no)?; |
| 28 | let fields = as_object(&value).ok_or_else(|| format!("line {}: expected object", line_no))?; |
| 29 | |
| 30 | let mut name = None::<String>; |
| 31 | let mut set_value = None::<AnimationParam>; |
| 32 | for (k, v) in fields { |
| 33 | match k.as_ref() { |
| 34 | "name" => { |
| 35 | name = as_text(v).map(|s| s.to_string()); |
| 36 | } |
| 37 | "value" => { |
| 38 | set_value = Some(parse_param(v, line_no)?); |
| 39 | } |
| 40 | _ => {} |
| 41 | } |
| 42 | } |
| 43 | let name = name.ok_or_else(|| format!("line {}: set_var requires `name`", line_no))?; |
| 44 | let set_value = |
| 45 | set_value.ok_or_else(|| format!("line {}: set_var requires `value`", line_no))?; |
| 46 | |
| 47 | Ok(AnimationEvent::SetVar { |
| 48 | name: name.into(), |
| 49 | value: set_value, |
| 50 | }) |
| 51 | } |
| 52 | |
| 53 | fn parse_call_method(value: &str, line_no: usize) -> Result<AnimationEvent, String> { |
| 54 | let value = parse_scene_value_with_refs(value, line_no)?; |
no test coverage detected