difftreelog
refactor(evaluator) extract obj value evaluation
in: master
1 file changed
crates/jrsonnet-evaluator/src/obj.rsdiffbeforeafterboth110 }110 }111 pub(crate) fn get_raw(&self, key: &str, real_this: &ObjValue) -> Result<Option<Val>> {111 pub(crate) fn get_raw(&self, key: &str, real_this: &ObjValue) -> Result<Option<Val>> {112 match (self.0.this_entries.get(key), &self.0.super_obj) {112 match (self.0.this_entries.get(key), &self.0.super_obj) {113 (Some(k), None) => Ok(Some(113 (Some(k), None) => Ok(Some(self.evaluate_this(k, real_this)?)),114 k.invoke115 .evaluate(Some(real_this.clone()), self.0.super_obj.clone())?116 .evaluate()?,117 )),118 (Some(k), Some(s)) => {114 (Some(k), Some(s)) => {119 let lazy = k120 .invoke121 .evaluate(Some(real_this.clone()), self.0.super_obj.clone())?;122 let our = lazy.evaluate()?;115 let our = self.evaluate_this(k, real_this)?;123 if k.add {116 if k.add {124 s.get_raw(key, real_this)?117 s.get_raw(key, real_this)?125 .map_or(Ok(Some(our.clone())), |v| {118 .map_or(Ok(Some(our.clone())), |v| {133 (None, None) => Ok(None),126 (None, None) => Ok(None),134 }127 }135 }128 }129 fn evaluate_this(&self, v: &ObjMember, real_this: &ObjValue) -> Result<Val> {130 Ok(v.invoke131 .evaluate(Some(real_this.clone()), self.0.super_obj.clone())?132 .evaluate()?)133 }136}134}137impl PartialEq for ObjValue {135impl PartialEq for ObjValue {138 fn eq(&self, other: &Self) -> bool {136 fn eq(&self, other: &Self) -> bool {