difftreelog
feat multichar std.splitLimit
in: master
2 files changed
crates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/builtin/mod.rs
+++ b/crates/jrsonnet-evaluator/src/builtin/mod.rs
@@ -623,12 +623,15 @@
}
#[jrsonnet_macros::builtin]
-fn builtin_splitlimit(str: IStr, c: char, maxsplits: Either![usize, M1]) -> Result<VecVal> {
+fn builtin_splitlimit(str: IStr, c: IStr, maxsplits: Either![usize, M1]) -> Result<VecVal> {
use Either2::*;
- Ok(VecVal(match maxsplits {
- A(n) => str.splitn(n + 1, c).map(|s| Val::Str(s.into())).collect(),
- B(_) => str.split(c).map(|s| Val::Str(s.into())).collect(),
- }))
+ Ok(VecVal(Cc::new(match maxsplits {
+ A(n) => str
+ .splitn(n + 1, &c as &str)
+ .map(|s| Val::Str(s.into()))
+ .collect(),
+ B(_) => str.split(&c as &str).map(|s| Val::Str(s.into())).collect(),
+ })))
}
#[jrsonnet_macros::builtin]
crates/jrsonnet-stdlib/src/std.jsonnetdiffbeforeafterboth122 assert std.length(str) > 0 : 'Not hexadecimal: ""';122 assert std.length(str) > 0 : 'Not hexadecimal: ""';123 parse_nat(str, 16),123 parse_nat(str, 16),124124125 split(str, c)::125 split(str, c):: std.splitLimit(str, c, -1),126 assert std.isString(str) : 'std.split first parameter should be a string, got ' + std.type(str);127 assert std.isString(c) : 'std.split second parameter should be a string, got ' + std.type(c);128 assert std.length(c) == 1 : 'std.split second parameter should have length 1, got ' + std.length(c);129 std.splitLimit(str, c, -1),130126131 splitLimit:: $intrinsic(splitLimit),127 splitLimit:: $intrinsic(splitLimit),132128