--- a/cmds/jrsonnet/Cargo.toml +++ b/cmds/jrsonnet/Cargo.toml @@ -30,9 +30,7 @@ # Bigint type exp-bigint = ["jrsonnet-evaluator/exp-bigint", "jrsonnet-cli/exp-bigint"] # std.regex and co. -exp-regex = [ - "jrsonnet-stdlib/exp-regex", -] +exp-regex = ["jrsonnet-cli/exp-regex"] # obj?.field, obj?.['field'] exp-null-coaelse = [ "jrsonnet-evaluator/exp-null-coaelse", --- a/crates/jrsonnet-evaluator/src/typed/conversions.rs +++ b/crates/jrsonnet-evaluator/src/typed/conversions.rs @@ -10,7 +10,7 @@ bail, function::{native::NativeDesc, FuncDesc, FuncVal}, typed::CheckType, - val::{IndexableVal, ThunkMapper}, + val::{IndexableVal, StrValue, ThunkMapper}, ObjValue, ObjValueBuilder, Result, Thunk, Val, }; --- a/crates/jrsonnet-stdlib/src/regex.rs +++ b/crates/jrsonnet-stdlib/src/regex.rs @@ -45,7 +45,7 @@ let mut named_captures = ObjValueBuilder::with_capacity(regex.capture_names().len()); let Some(captured) = regex.captures(&str) else { - return Ok(Val::Null) + return Ok(Val::Null); }; for ele in captured.iter().skip(1) { @@ -62,15 +62,14 @@ .flat_map(|(i, v)| Some((i, v?))) { let capture = captures[i].clone(); - named_captures.member(name.into()).value(capture)?; + named_captures.field(name).try_value(capture)?; } - out.member("string".into()) - .value_unchecked(Val::Str(captured.get(0).unwrap().as_str().into())); - out.member("captures".into()) - .value_unchecked(Val::Arr(captures.into())); - out.member("namedCaptures".into()) - .value_unchecked(Val::Obj(named_captures.build())); + out.field("string") + .value(Val::Str(captured.get(0).unwrap().as_str().into())); + out.field("captures").value(Val::Arr(captures.into())); + out.field("namedCaptures") + .value(Val::Obj(named_captures.build())); Ok(Val::Obj(out.build())) }