difftreelog
fix(evaluator) handle visibility for objectFieldsEx
in: master
1 file changed
crates/jsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth423 match evaluate(context, expr)? {423 match evaluate(context, expr)? {424 Val::Str(n) => Val::Num(n.chars().count() as f64),424 Val::Str(n) => Val::Num(n.chars().count() as f64),425 Val::Arr(i) => Val::Num(i.len() as f64),425 Val::Arr(i) => Val::Num(i.len() as f64),426 Val::Obj(o) => Val::Num(o.fields().len() as f64),426 Val::Obj(o) => Val::Num(427 o.fields_visibility()428 .into_iter()429 .filter(|(_k, v)| *v)430 .count() as f64,431 ),427 v => panic!("can't get length of {:?}", v),432 v => panic!("can't get length of {:?}", v),428 }433 }472 // object, includeHidden477 // object, includeHidden473 ("std", "objectFieldsEx") => {478 ("std", "objectFieldsEx") => {474 assert_eq!(args.len(), 2);479 assert_eq!(args.len(), 2);475 if let (Val::Obj(body), Val::Bool(_include_hidden)) = (480 if let (Val::Obj(body), Val::Bool(include_hidden)) = (476 evaluate(context.clone(), &args[0].1)?,481 evaluate(context.clone(), &args[0].1)?,477 evaluate(context, &args[1].1)?,482 evaluate(context, &args[1].1)?,478 ) {483 ) {479 // TODO: handle visibility (_include_hidden)480 Val::Arr(body.fields().into_iter().map(Val::Str).collect())484 Val::Arr(485 body.fields_visibility()486 .into_iter()487 .filter(|(_k, v)| *v || include_hidden)488 .map(|(k, _v)| Val::Str(k))489 .collect(),490 )481 } else {491 } else {