git.delta.rocks / jrsonnet / refs/commits / 07ae295ebde4

difftreelog

Merge pull request #55 from messense/ascii

Yaroslav Bolyukin2021-07-13parents: #fbae069 #0ecdce9.patch.diff
in: master

3 files changed

modifiedcrates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth
126 ("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}
832
833fn 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}
844
845fn 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}
830856
831pub fn call_builtin(857pub fn call_builtin(
832 context: Context,858 context: Context,
modifiedcrates/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😀")"#);
+	}
 }
modifiedcrates/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),