1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
use super::{Context, Executable}; use crate::{ syntax::ast::node::{ConditionalOp, If}, Result, Value, }; impl Executable for If { fn run(&self, interpreter: &mut Context) -> Result<Value> { Ok(if self.cond().run(interpreter)?.to_boolean() { self.body().run(interpreter)? } else if let Some(ref else_e) = self.else_node() { else_e.run(interpreter)? } else { Value::undefined() }) } } impl Executable for ConditionalOp { fn run(&self, interpreter: &mut Context) -> Result<Value> { Ok(if self.cond().run(interpreter)?.to_boolean() { self.if_true().run(interpreter)? } else { self.if_false().run(interpreter)? }) } }