matchPath method

Map<String, String>? matchPath(
  1. String requestPath
)

Matches a request path against the route path pattern.

Implementation

Map<String, String>? matchPath(String requestPath) {
  final normalized = _normalizeRequestPath(requestPath);
  final requestSegments = _splitPath(normalized);

  if (_pathSegments.length != requestSegments.length) {
    return null;
  }

  final parameters = <String, String>{};
  for (var index = 0; index < _pathSegments.length; index++) {
    final routeSegment = _pathSegments[index];
    final requestSegment = requestSegments[index];

    if (routeSegment.startsWith(':')) {
      final parameterName = routeSegment.substring(1);
      if (parameterName.isEmpty) {
        return null;
      }
      parameters[parameterName] = Uri.decodeComponent(requestSegment);
      continue;
    }

    if (routeSegment != requestSegment) {
      return null;
    }
  }

  return parameters;
}