From: Adrián Arroyo Calle Date: Mon, 2 Oct 2023 21:49:09 +0000 (+0200) Subject: Improved version of url_decode X-Git-Tag: remove~57^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=93ff049e54d3dafce4193729d22281d88718e2e9;p=scryer-prolog.git Improved version of url_decode --- diff --git a/src/lib/http/http_server.pl b/src/lib/http/http_server.pl index faa76ce5..4c22e497 100644 --- a/src/lib/http/http_server.pl +++ b/src/lib/http/http_server.pl @@ -300,25 +300,21 @@ http_query(http_request(_, _, Queries), Key, Value) :- member(Key-Value, Queries parse_queries([Key-Value|Queries]) --> string_without("=", Key0), - { - phrase(url_decode(Key), Key0) - }, "=", string_without("&", Value0), - { - phrase(url_decode(Value), Value0) - }, "&", - parse_queries(Queries). + parse_queries(Queries), + { + phrase(url_decode(Key), Key0), + phrase(url_decode(Value), Value0) + }. parse_queries([Key-Value]) --> string_without("=", Key0), - { - phrase(url_decode(Key), Key0) - }, "=", string_without(" ", Value0), { + phrase(url_decode(Key), Key0), phrase(url_decode(Value), Value0) }. @@ -329,9 +325,13 @@ parse_queries([]) --> url_decode([Char|Chars]) --> [Char], { - Char \= '%' + Char \= '%', + Char \= (+) }, url_decode(Chars). +url_decode([' '|Chars]) --> + "+", + url_decode(Chars). url_decode([Char|Chars]) --> "%", [A],