difftreelog
Merge pull request #55 from messense/ascii
in: master
3 files changed
crates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth126 ("strReplace".into(), builtin_str_replace),126 ("strReplace".into(), builtin_str_replace),127 ("splitLimit".into(), builtin_splitlimit),127 ("splitLimit".into(), builtin_splitlimit),128 ("parseJson".into(), builtin_parse_json),128 ("parseJson".into(), builtin_parse_json),129 ("asciiUpper".into(), builtin_ascii_upper),130 ("asciiLower".into(), builtin_ascii_lower),129 ].iter().cloned().collect()131 ].iter().cloned().collect()130 };132 };131}133}828 })830 })829}831}832833fn builtin_ascii_upper(834 context: Context,835 _loc: Option<&ExprLocation>,836 args: &ArgsDesc,837) -> Result<Val> {838 parse_args!(context, "asciiUpper", args, 1, [839 0, str: ty!(string) => Val::Str;840 ], {841 Ok(Val::Str(str.to_ascii_uppercase().into()))842 })843}844845fn builtin_ascii_lower(846 context: Context,847 _loc: Option<&ExprLocation>,848 args: &ArgsDesc,849) -> Result<Val> {850 parse_args!(context, "asciiLower", args, 1, [851 0, str: ty!(string) => Val::Str;852 ], {853 Ok(Val::Str(str.to_ascii_lowercase().into()))854 })855}830856831pub fn call_builtin(857pub fn call_builtin(832 context: Context,858 context: Context,crates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/lib.rs
+++ b/crates/jrsonnet-evaluator/src/lib.rs
@@ -1045,4 +1045,10 @@
.unwrap_err();
assert_eq!(error.error().to_string(), "assert failed: is number");
}
+
+ #[test]
+ fn test_ascii_upper_lower() {
+ assert_eval!(r#"std.assertEqual(std.asciiUpper("aBc😀"), "ABC😀")"#);
+ assert_eval!(r#"std.assertEqual(std.asciiLower("aBc😀"), "abc😀")"#);
+ }
}
crates/jrsonnet-stdlib/src/std.jsonnetdiffbeforeafterboth--- a/crates/jrsonnet-stdlib/src/std.jsonnet
+++ b/crates/jrsonnet-stdlib/src/std.jsonnet
@@ -128,21 +128,9 @@
strReplace:: $intrinsic(strReplace),
- asciiUpper(str)::
- local cp = std.codepoint;
- local up_letter(c) = if cp(c) >= 97 && cp(c) < 123 then
- std.char(cp(c) - 32)
- else
- c;
- std.join('', std.map(up_letter, std.stringChars(str))),
+ asciiUpper:: $intrinsic(asciiUpper),
- asciiLower(str)::
- local cp = std.codepoint;
- local down_letter(c) = if cp(c) >= 65 && cp(c) < 91 then
- std.char(cp(c) + 32)
- else
- c;
- std.join('', std.map(down_letter, std.stringChars(str))),
+ asciiLower:: $intrinsic(asciiLower),
range:: $intrinsic(range),