diff options
author | Louis Pilfold <louis@lpil.uk> | 2021-09-04 23:06:09 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-09-04 23:06:09 +0100 |
commit | 7a52f1356fe39475b7576ca5f105a10ae975e7ff (patch) | |
tree | 26aaef910ccba182d38474630bb904af732934f2 /src/gleam_stdlib.js | |
parent | a54b1986daf44ebfd941849584175215306ad6d9 (diff) | |
download | gleam_stdlib-7a52f1356fe39475b7576ca5f105a10ae975e7ff.tar.gz gleam_stdlib-7a52f1356fe39475b7576ca5f105a10ae975e7ff.zip |
JS parse query
Diffstat (limited to 'src/gleam_stdlib.js')
-rw-r--r-- | src/gleam_stdlib.js | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index 360de75..082e661 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -352,3 +352,21 @@ export function map_get(map, key) { export function map_insert(key, value, map) { return map.insert(key, value); } + +function decode_query_component(string) { + return decodeURIComponent((string || "").replace("+", " ")); +} + +export function parse_query(query) { + try { + let pairs = []; + for (let section of query.split("&")) { + let [key, value] = section.split("="); + if (!key) continue; + pairs.push([decode_query_component(key), decode_query_component(value)]); + } + return new Ok(List.fromArray(pairs)); + } catch (error) { + return new Error(Nil); + } +} |