From fda852f69a5e2de6e2762311f6ed761feaafbeee Mon Sep 17 00:00:00 2001 From: Jeff Date: Fri, 23 Jun 2023 22:52:08 -0400 Subject: [PATCH] Allow getting nested map values --- src/context/mod.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/context/mod.rs b/src/context/mod.rs index 341df75..a413b04 100644 --- a/src/context/mod.rs +++ b/src/context/mod.rs @@ -85,7 +85,17 @@ impl VariableMap { impl Context for VariableMap { fn get_value(&self, identifier: &str) -> Option<&Value> { - self.variables.get(identifier) + let split = identifier.split_once("."); + if let Some((map_name, next_identifier)) = split { + let value = self.variables.get(map_name)?; + if let Value::Map(map) = value { + map.get_value(next_identifier) + } else { + None + } + } else { + self.variables.get(identifier) + } } fn call_function(&self, identifier: &str, argument: &Value) -> EvalexprResult {