)
Returns the query
split into a map according to the rules
specified for FORM post in the
HTML 4.01 specification section 17.13.4. Each key and value in the returned
map has been decoded. If the query
is the empty string an empty map is returned.
Keys in the query string that have no value are mapped to the empty string.
Each query component will be decoded using encoding
. The default encoding
is UTF-8.
Source
/**
* Returns the [query] split into a map according to the rules
* specified for FORM post in the
* [HTML 4.01 specification section 17.13.4]
* (http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4
* "HTML 4.01 section 17.13.4"). Each key and value in the returned
* map has been decoded. If the [query]
* is the empty string an empty map is returned.
*
* Keys in the query string that have no value are mapped to the
* empty string.
*
* Each query component will be decoded using [encoding]. The default encoding
* is UTF-8.
*/
static Map<String, String> splitQueryString(String query,
{Encoding encoding: UTF8}) {
return query.split("&").fold({}, (map, element) {
int index = element.indexOf("=");
if (index == -1) {
if (element != "") {
map[decodeQueryComponent(element, encoding: encoding)] = "";
}
} else if (index != 0) {
var key = element.substring(0, index);
var value = element.substring(index + 1);
map[Uri.decodeQueryComponent(key, encoding: encoding)] =
decodeQueryComponent(value, encoding: encoding);
}
return map;
});
}