git.delta.rocks / jrsonnet / refs/commits / 8ec1af04129d

difftreelog

feat feature-gate regex

Yaroslav Bolyukin2023-12-10parent: #103c2a5.patch.diff
in: master

3 files changed

modifiedcmds/jrsonnet/Cargo.tomldiffbeforeafterboth
30# Bigint type30# Bigint type
31exp-bigint = ["jrsonnet-evaluator/exp-bigint", "jrsonnet-cli/exp-bigint"]31exp-bigint = ["jrsonnet-evaluator/exp-bigint", "jrsonnet-cli/exp-bigint"]
32# std.regex and co.32# std.regex and co.
33exp-regex = [33exp-regex = ["jrsonnet-cli/exp-regex"]
34 "jrsonnet-stdlib/exp-regex",
35]
36# obj?.field, obj?.['field']34# obj?.field, obj?.['field']
37exp-null-coaelse = [35exp-null-coaelse = [
modifiedcrates/jrsonnet-evaluator/src/typed/conversions.rsdiffbeforeafterboth
10 bail,10 bail,
11 function::{native::NativeDesc, FuncDesc, FuncVal},11 function::{native::NativeDesc, FuncDesc, FuncVal},
12 typed::CheckType,12 typed::CheckType,
13 val::{IndexableVal, ThunkMapper},13 val::{IndexableVal, StrValue, ThunkMapper},
14 ObjValue, ObjValueBuilder, Result, Thunk, Val,14 ObjValue, ObjValueBuilder, Result, Thunk, Val,
15};15};
1616
modifiedcrates/jrsonnet-stdlib/src/regex.rsdiffbeforeafterboth
45 let mut named_captures = ObjValueBuilder::with_capacity(regex.capture_names().len());45 let mut named_captures = ObjValueBuilder::with_capacity(regex.capture_names().len());
4646
47 let Some(captured) = regex.captures(&str) else {47 let Some(captured) = regex.captures(&str) else {
48 return Ok(Val::Null)48 return Ok(Val::Null);
49 };49 };
5050
51 for ele in captured.iter().skip(1) {51 for ele in captured.iter().skip(1) {
62 .flat_map(|(i, v)| Some((i, v?)))62 .flat_map(|(i, v)| Some((i, v?)))
63 {63 {
64 let capture = captures[i].clone();64 let capture = captures[i].clone();
65 named_captures.member(name.into()).value(capture)?;65 named_captures.field(name).try_value(capture)?;
66 }66 }
6767
68 out.member("string".into())68 out.field("string")
69 .value_unchecked(Val::Str(captured.get(0).unwrap().as_str().into()));69 .value(Val::Str(captured.get(0).unwrap().as_str().into()));
70 out.member("captures".into())70 out.field("captures").value(Val::Arr(captures.into()));
71 .value_unchecked(Val::Arr(captures.into()));
72 out.member("namedCaptures".into())71 out.field("namedCaptures")
73 .value_unchecked(Val::Obj(named_captures.build()));72 .value(Val::Obj(named_captures.build()));
7473
75 Ok(Val::Obj(out.build()))74 Ok(Val::Obj(out.build()))
76}75}