parse method
Parses uri
returning the parameter values in a map keyed by the
variable names in the template.
Implementation
Map<String, String> parse(Uri uri) {
final parameters = <String, String>{};
if (_pathVariables.isNotEmpty) {
final match = _pathRegex!.firstMatch(uri.path);
if (match == null) {
throw ParseException('$template does not match $uri');
}
var i = 1;
for (var param in _pathVariables) {
parameters[param] = match.group(i++)!;
}
}
if (_queryVariables.isNotEmpty) {
for (var key in _queryVariables.keys) {
if (_queryVariables[key] == null) {
parameters[key] = uri.queryParameters[key]!;
}
}
}
if (_fragmentRegex != null) {
final match = _fragmentRegex!.firstMatch(uri.fragment);
if (match == null) {
throw ParseException('$template does not match $uri');
}
var i = 1;
for (var param in _fragmentVariables) {
parameters[param] = match.group(i++)!;
}
}
return parameters;
}