git.delta.rocks / jrsonnet / refs/commits / dcbb76153b5f

difftreelog

refactor(evaluator) extract obj value evaluation

Лач2020-07-01parent: #516792f.patch.diff
in: master

1 file changed

modifiedcrates/jrsonnet-evaluator/src/obj.rsdiffbeforeafterboth
110 }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.invoke
115 .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 = k
120 .invoke
121 .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.invoke
131 .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 {