diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-08-30 16:39:16 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-08-30 16:39:16 +0200 |
| commit | ff25573224400673d08b31e576d5a0d87751dbe1 (patch) | |
| tree | 7a0df37b627a238250ffca454d1dd78dc765cedb | |
| parent | e4e79990dad90aea17ea99e54fcd60435927bb56 (diff) | |
Lower- and uppercase string conversion functions
| -rw-r--r-- | src/library/mod.rs | 2 | ||||
| -rw-r--r-- | src/library/utility.rs | 10 | ||||
| -rw-r--r-- | tests/typ/utility/strings.typ | 8 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/library/mod.rs b/src/library/mod.rs index a549aa72..d02c9608 100644 --- a/src/library/mod.rs +++ b/src/library/mod.rs @@ -63,6 +63,8 @@ pub fn new() -> Scope { std.def_func("rgb", rgb); std.def_func("min", min); std.def_func("max", max); + std.def_func("lower", lower); + std.def_func("upper", upper); // Colors. std.def_const("white", RgbaColor::WHITE); diff --git a/src/library/utility.rs b/src/library/utility.rs index 84f1d7ab..b26ed154 100644 --- a/src/library/utility.rs +++ b/src/library/utility.rs @@ -75,3 +75,13 @@ fn minmax(args: &mut Arguments, goal: Ordering) -> TypResult<Value> { } Ok(extremum) } + +/// `lower`: Convert a string to lowercase. +pub fn lower(_: &mut EvalContext, args: &mut Arguments) -> TypResult<Value> { + Ok(args.expect::<Str>("string")?.to_lowercase().into()) +} + +/// `upper`: Convert a string to uppercase. +pub fn upper(_: &mut EvalContext, args: &mut Arguments) -> TypResult<Value> { + Ok(args.expect::<Str>("string")?.to_uppercase().into()) +} diff --git a/tests/typ/utility/strings.typ b/tests/typ/utility/strings.typ new file mode 100644 index 00000000..7c708175 --- /dev/null +++ b/tests/typ/utility/strings.typ @@ -0,0 +1,8 @@ +// Test string functions. +// Ref: false + +--- +#let memes = "ArE mEmEs gReAt?"; +#test(lower(memes), "are memes great?") +#test(upper(memes), "ARE MEMES GREAT?") +#test(upper("Ελλάδα"), "ΕΛΛΆΔΑ") |
