match method

Map<String, String>? match(
  1. String url
)

Match request URL against template Return path parameters if match, otherwise null

Implementation

Map<String, String>? match(String url) {
  final uri = Uri.parse(url);
  final segments = uri.pathSegments;
  final templateSegments = template
      .split('/')
      .where((s) => s.isNotEmpty)
      .toList();

  if (segments.length != templateSegments.length) return null;

  final params = <String, String>{};
  for (var i = 0; i < templateSegments.length; i++) {
    final seg = templateSegments[i];
    if (seg.startsWith(':')) {
      // path param
      final key = seg.substring(1);
      params[key] = segments[i];
    } else if (seg != segments[i]) {
      // literal mismatch
      return null;
    }
  }
  return params;
}