git.delta.rocks / jrsonnet / refs/commits / 6e67554e1625

difftreelog

fix std.decodeUTF8 should be lossy by default

uuxvswqwYaroslav Bolyukin2026-02-08parent: #5f96572.patch.diff
in: master

6 files changed

modifiedcrates/jrsonnet-stdlib/src/encoding.rsdiffbeforeafterboth
1use base64::{engine::general_purpose::STANDARD, Engine};1use base64::{engine::general_purpose::STANDARD, Engine};
2use jrsonnet_evaluator::{2use jrsonnet_evaluator::{
3 bail,
3 function::builtin,4 function::builtin,
4 runtime_error,5 runtime_error,
5 typed::{Either, Either2},6 typed::{Either, Either2},
12}13}
1314
14#[builtin]15#[builtin]
15pub fn builtin_decode_utf8(arr: IBytes) -> Result<IStr> {16pub fn builtin_decode_utf8(arr: IBytes, #[default(true)] lossy: bool) -> Result<IStr> {
16 arr.cast_str().ok_or_else(|| runtime_error!("bad utf8"))17 match arr.clone().cast_str() {
18 Some(s) => Ok(s),
19 None if lossy => Ok(String::from_utf8_lossy(arr.as_slice()).into()),
20 None => {
21 bail!("bad utf8")
22 }
23 }
17}24}
1825
19#[builtin]26#[builtin]
addedtests/golden/issue187.jsonnetdiffbeforeafterboth

no changes

addedtests/golden/issue187.jsonnet.goldendiffbeforeafterboth

no changes

addedtests/golden/issue187.rev.jsonnetdiffbeforeafterboth

no changes

addedtests/golden/issue187.rev.jsonnet.goldendiffbeforeafterboth

no changes

modifiedtests/suite/std_param_names.jsonnetdiffbeforeafterboth
129 parseJson: ['str'],129 parseJson: ['str'],
130 parseYaml: ['str'],130 parseYaml: ['str'],
131 encodeUTF8: ['str'],131 encodeUTF8: ['str'],
132 decodeUTF8: ['arr'],132 decodeUTF8: ['arr', 'lossy'],
133133
134 sum: ['arr'],134 sum: ['arr'],
135 avg: ['arr', 'onEmpty'],135 avg: ['arr', 'onEmpty'],