diff options
author | Richard Viney <richard.viney@gmail.com> | 2024-06-20 16:43:30 +1200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-06-23 11:52:52 +0100 |
commit | 8f38551c6060bf1afb2a56acc14143abd5263392 (patch) | |
tree | 01946ee746d00ab7ae0c87afd594c814da897e6d | |
parent | 3592b0b847d0c4348fc37be868ac22607ce426de (diff) | |
download | gleam_stdlib-8f38551c6060bf1afb2a56acc14143abd5263392.tar.gz gleam_stdlib-8f38551c6060bf1afb2a56acc14143abd5263392.zip |
Fix `float.parse` failing to parse exponential notation on JavaScript
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | src/gleam_stdlib.mjs | 2 | ||||
-rw-r--r-- | test/gleam/float_test.gleam | 12 |
3 files changed, 14 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 8847122..babdaf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ - Improved bit array Base64 encoding and decoding speed on JavaScript. - Fixed a bug where Base64 encoding a bit array larger than ~100KiB would throw an exception on JavaScript. +- Fixed `float.parse` failing to parse exponential notation on JavaScript. ## v0.38.0 - 2024-05-24 diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index d067cec..83fcec9 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -34,7 +34,7 @@ export function parse_int(value) { } export function parse_float(value) { - if (/^[-+]?(\d+)\.(\d+)$/.test(value)) { + if (/^[-+]?(\d+)\.(\d+)([eE][-+]?\d+)?$/.test(value)) { return new Ok(parseFloat(value)); } else { return new Error(Nil); diff --git a/test/gleam/float_test.gleam b/test/gleam/float_test.gleam index a91c2c4..6731c23 100644 --- a/test/gleam/float_test.gleam +++ b/test/gleam/float_test.gleam @@ -26,6 +26,18 @@ pub fn parse_test() { |> float.parse |> should.equal(Ok(0.123456789)) + "1.234e10" + |> float.parse + |> should.equal(Ok(1.234e10)) + + "-1.234e+10" + |> float.parse + |> should.equal(Ok(-1.234e10)) + + "1.234e-10" + |> float.parse + |> should.equal(Ok(1.234e-10)) + "" |> float.parse |> should.equal(Error(Nil)) |