git.delta.rocks / jrsonnet / refs/commits / f455d544abdf

difftreelog

feat multichar std.splitLimit

Yaroslav Bolyukin2022-04-20parent: #00b3f93.patch.diff
in: master

2 files changed

modifiedcrates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth
623}623}
624624
625#[jrsonnet_macros::builtin]625#[jrsonnet_macros::builtin]
626fn builtin_splitlimit(str: IStr, c: char, maxsplits: Either![usize, M1]) -> Result<VecVal> {626fn builtin_splitlimit(str: IStr, c: IStr, maxsplits: Either![usize, M1]) -> Result<VecVal> {
627 use Either2::*;627 use Either2::*;
628 Ok(VecVal(match maxsplits {628 Ok(VecVal(Cc::new(match maxsplits {
629 A(n) => str.splitn(n + 1, c).map(|s| Val::Str(s.into())).collect(),629 A(n) => str
630 .splitn(n + 1, &c as &str)
631 .map(|s| Val::Str(s.into()))
632 .collect(),
630 B(_) => str.split(c).map(|s| Val::Str(s.into())).collect(),633 B(_) => str.split(&c as &str).map(|s| Val::Str(s.into())).collect(),
631 }))634 })))
632}635}
633636
634#[jrsonnet_macros::builtin]637#[jrsonnet_macros::builtin]
modifiedcrates/jrsonnet-stdlib/src/std.jsonnetdiffbeforeafterboth
--- a/crates/jrsonnet-stdlib/src/std.jsonnet
+++ b/crates/jrsonnet-stdlib/src/std.jsonnet
@@ -122,11 +122,7 @@
     assert std.length(str) > 0 : 'Not hexadecimal: ""';
     parse_nat(str, 16),
 
-  split(str, c)::
-    assert std.isString(str) : 'std.split first parameter should be a string, got ' + std.type(str);
-    assert std.isString(c) : 'std.split second parameter should be a string, got ' + std.type(c);
-    assert std.length(c) == 1 : 'std.split second parameter should have length 1, got ' + std.length(c);
-    std.splitLimit(str, c, -1),
+  split(str, c):: std.splitLimit(str, c, -1),
 
   splitLimit:: $intrinsic(splitLimit),