diff options
author | inoas <mail@inoas.com> | 2022-04-11 15:33:33 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-04-12 23:00:26 +0100 |
commit | 97b12bb5ec023b0b1077e4559b1ba0f4932d8cb3 (patch) | |
tree | 8f3857145f69984f9eca203ffb2d3ba1044b00fd /src/gleam_stdlib.mjs | |
parent | 12a0f53eb5c95e774fc537398a27ed42f3873ab6 (diff) | |
download | gleam_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.mjs | 14 |
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) { |