difftreelog
perf native implementation of std.splitLimitR (#163)
in: master
* native implementation of std.splitLimitR * style: fix formatting ---------
5 files changed
crates/jrsonnet-stdlib/src/lib.rsdiffbeforeafterboth178 ("isEmpty", builtin_is_empty::INST),178 ("isEmpty", builtin_is_empty::INST),179 ("equalsIgnoreCase", builtin_equals_ignore_case::INST),179 ("equalsIgnoreCase", builtin_equals_ignore_case::INST),180 ("splitLimit", builtin_splitlimit::INST),180 ("splitLimit", builtin_splitlimit::INST),181 ("splitLimitR", builtin_splitlimitr::INST),181 ("asciiUpper", builtin_ascii_upper::INST),182 ("asciiUpper", builtin_ascii_upper::INST),182 ("asciiLower", builtin_ascii_lower::INST),183 ("asciiLower", builtin_ascii_lower::INST),183 ("findSubstr", builtin_find_substr::INST),184 ("findSubstr", builtin_find_substr::INST),crates/jrsonnet-stdlib/src/std.jsonnetdiffbeforeafterboth20 stripChars(str, chars)::20 stripChars(str, chars)::21 std.lstripChars(std.rstripChars(str, chars), chars),21 std.lstripChars(std.rstripChars(str, chars), chars),222223 splitLimitR(str, c, maxsplits)::24 if maxsplits == -1 then25 std.splitLimit(str, c, -1)26 else27 local revStr(str) = std.join('', std.reverse(std.stringChars(str)));28 std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),2930 split(str, c):: std.splitLimit(str, c, -1),23 split(str, c):: std.splitLimit(str, c, -1),312432 mapWithIndex(func, arr)::25 mapWithIndex(func, arr)::crates/jrsonnet-stdlib/src/strings.rsdiffbeforeafterboth46 }46 }47}47}4849#[builtin]50pub fn builtin_splitlimitr(str: IStr, c: IStr, maxsplits: Either![usize, M1]) -> ArrValue {51 use Either2::*;52 match maxsplits {53 A(n) =>54 // rsplitn does not implement DoubleEndedIterator so collect into55 // a temporary vec56 {57 str.rsplitn(n + 1, &c as &str)58 .map(Val::string)59 .collect::<Vec<_>>()60 .into_iter()61 .rev()62 .collect()63 }64 B(_) => str.split(&c as &str).map(Val::string).collect(),65 }66}486749#[builtin]68#[builtin]50pub fn builtin_ascii_upper(str: IStr) -> String {69pub fn builtin_ascii_upper(str: IStr) -> String {tests/golden/builtin_strings.jsonnetdiffbeforeafterbothno changes
tests/golden/builtin_strings.jsonnet.goldendiffbeforeafterbothno changes