aboutsummaryrefslogtreecommitdiff
path: root/src/gleam_stdlib.mjs
diff options
context:
space:
mode:
authorinoas <mail@inoas.com>2022-04-11 15:33:33 +0200
committerLouis Pilfold <louis@lpil.uk>2022-04-12 23:00:26 +0100
commit97b12bb5ec023b0b1077e4559b1ba0f4932d8cb3 (patch)
tree8f3857145f69984f9eca203ffb2d3ba1044b00fd /src/gleam_stdlib.mjs
parent12a0f53eb5c95e774fc537398a27ed42f3873ab6 (diff)
downloadgleam_stdlib-97b12bb5ec023b0b1077e4559b1ba0f4932d8cb3.tar.gz
gleam_stdlib-97b12bb5ec023b0b1077e4559b1ba0f4932d8cb3.zip
JavaScript implementation of the module's receives fallback code for NodeJS 14 compatibility
Diffstat (limited to 'src/gleam_stdlib.mjs')
-rw-r--r--src/gleam_stdlib.mjs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs
index 280cd95..4dd4aa7 100644
--- a/src/gleam_stdlib.mjs
+++ b/src/gleam_stdlib.mjs
@@ -58,7 +58,19 @@ export function int_to_base_string(int, base) {
}
export function string_replace(string, target, substitute) {
- return string.replaceAll(target, substitute);
+ if (typeof string.replaceAll !== "undefined") {
+ return string.replaceAll(target, substitute);
+ }
+ // Fallback for older Node.js versions:
+ // 1. <https://stackoverflow.com/a/1144788>
+ // 2. <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping>
+ // TODO: This fallback could be remove once Node.js 14 is EOL
+ // aka <https://nodejs.org/en/about/releases/> on or after 2024-04-30
+ return string.replace(
+ // $& means the whole matched string
+ new RegExp(target.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'),
+ substitute
+ );
}
export function string_reverse(string) {