From 733032f0d8570913f41ccf9498fe82301f2eadc6 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Wed, 21 Jul 2021 18:34:57 +0100 Subject: Convert some string functions --- src/gleam_stdlib.js | 46 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) (limited to 'src/gleam_stdlib.js') diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index 960792b..15c8a09 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -1,19 +1,47 @@ export function identity(x) { - return x + return x; } export function parse_int(value) { - if (/^[-+]?(\d+)$/.test(value)) { - return { "type": "Ok", "0": Number(value) } - } else { - return { "type": "Error", "0": null } - } + if (/^[-+]?(\d+)$/.test(value)) { + return { type: "Ok", 0: Number(value) }; + } else { + return { type: "Error", 0: null }; + } } export function int_to_string(int) { - return int.toString() + return int.toString(); } export function int_to_base_string(int, base) { - return int.toString(base) -} \ No newline at end of file + return int.toString(base); +} + +export function string_replace(string, target, substitute) { + return string.replaceAll(target, substitute); +} + +export function string_reverse(string) { + return string.split("").reverse().join(""); +} + +export function string_length(string) { + if (Intl && Intl.Segmenter) { + let i = 0; + for (let _ of new Intl.Segmenter("en-gb").segment(string)) { + i++; + } + return i; + } else { + return string.match(/./gu).length; + } +} + +export function string_lowercase(string) { + return string.toLowerCase(); +} + +export function string_uppercase(string) { + return string.toUpperCase(); +} -- cgit v1.2.3