parse method

Map<String, String> parse(
  1. Uri uri
)

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;
}