From 945152e8075e04d91aac193608ecc84b769c7ba4 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Tue, 7 Sep 2021 19:36:31 +0100 Subject: URI percent encode and decode for JS --- src/gleam_stdlib.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/gleam_stdlib.js') diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index 082e661..3658142 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -353,17 +353,29 @@ export function map_insert(key, value, map) { return map.insert(key, value); } -function decode_query_component(string) { +function unsafe_percent_decode(string) { return decodeURIComponent((string || "").replace("+", " ")); } +export function percent_decode(string) { + try { + return new Ok(unsafe_percent_decode(string)); + } catch (error) { + return new Error(Nil); + } +} + +export function percent_encode(string) { + return encodeURIComponent(string); +} + 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)]); + pairs.push([unsafe_percent_decode(key), unsafe_percent_decode(value)]); } return new Ok(List.fromArray(pairs)); } catch (error) { -- cgit v1.2.3