Improved version of url_decode

This commit is contained in:
Adrián Arroyo Calle
2023-10-02 23:49:09 +02:00
parent 40d3345cd5
commit 93ff049e54

View File

@@ -300,25 +300,21 @@ http_query(http_request(_, _, Queries), Key, Value) :- member(Key-Value, Queries
parse_queries([Key-Value|Queries]) --> parse_queries([Key-Value|Queries]) -->
string_without("=", Key0), string_without("=", Key0),
{
phrase(url_decode(Key), Key0)
},
"=", "=",
string_without("&", Value0), 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]) --> parse_queries([Key-Value]) -->
string_without("=", Key0), string_without("=", Key0),
{
phrase(url_decode(Key), Key0)
},
"=", "=",
string_without(" ", Value0), string_without(" ", Value0),
{ {
phrase(url_decode(Key), Key0),
phrase(url_decode(Value), Value0) phrase(url_decode(Value), Value0)
}. }.
@@ -329,9 +325,13 @@ parse_queries([]) -->
url_decode([Char|Chars]) --> url_decode([Char|Chars]) -->
[Char], [Char],
{ {
Char \= '%' Char \= '%',
Char \= (+)
}, },
url_decode(Chars). url_decode(Chars).
url_decode([' '|Chars]) -->
"+",
url_decode(Chars).
url_decode([Char|Chars]) --> url_decode([Char|Chars]) -->
"%", "%",
[A], [A],