Evaluate a literal value
(&self, literal: &crate::ast::Literal)
| 5146 | |
| 5147 | /// Evaluate a literal value |
| 5148 | fn evaluate_literal(&self, literal: &crate::ast::Literal) -> Result<Value, ExecutionError> { |
| 5149 | match literal { |
| 5150 | crate::ast::Literal::String(s) => Ok(Value::String(s.clone())), |
| 5151 | crate::ast::Literal::Integer(i) => Ok(Value::Number(*i as f64)), |
| 5152 | crate::ast::Literal::Float(f) => Ok(Value::Number(*f)), |
| 5153 | crate::ast::Literal::Boolean(b) => Ok(Value::Boolean(*b)), |
| 5154 | crate::ast::Literal::Null => Ok(Value::Null), |
| 5155 | crate::ast::Literal::DateTime(dt) => Ok(Value::String(dt.clone())), |
| 5156 | crate::ast::Literal::Duration(dur) => Ok(Value::String(dur.clone())), |
| 5157 | crate::ast::Literal::TimeWindow(tw) => Ok(Value::String(tw.clone())), |
| 5158 | crate::ast::Literal::Vector(vec) => { |
| 5159 | Ok(Value::Vector(vec.iter().map(|&f| f as f32).collect())) |
| 5160 | } |
| 5161 | crate::ast::Literal::List(list) => { |
| 5162 | let converted: Vec<Value> = list |
| 5163 | .iter() |
| 5164 | .map(|lit| self.evaluate_literal(lit)) |
| 5165 | .collect::<Result<Vec<_>, _>>()?; |
| 5166 | Ok(Value::List(converted)) |
| 5167 | } |
| 5168 | } |
| 5169 | } |
| 5170 | |
| 5171 | /// Evaluate a binary operation |
| 5172 | fn evaluate_binary_op( |
no test coverage detected