extractPathParams static method

Map<String, String>? extractPathParams(
  1. String pattern,
  2. String actual
)

Extracts dynamic path parameters from a route pattern using the actual actual path.

For example, pattern '/user/:id' and actual '/user/42' returns {'id': '42'}. Returns null if the actual path does not match the pattern.

Implementation

static Map<String, String>? extractPathParams(String pattern, String actual) {
  final regExpPattern = pattern.replaceAllMapped(
      RegExp(r':(\w+)'), (match) => '(?<${match[1]}>[\\w-]+)');
  final regExp = RegExp('^$regExpPattern\$');
  final match = regExp.firstMatch(actual);
  if (match == null) return null;
  return {for (var name in match.groupNames) name: match.namedGroup(name)!};
}