RoutePattern constructor

RoutePattern(
  1. String path
)

Creates a pattern such as /users/:id.

Implementation

RoutePattern(this.path) {
  if (!path.startsWith('/') || path.contains('?') || path.contains('#')) {
    throw ArgumentError.value(path, 'path', 'Expected an absolute path only');
  }
  final uri = parseRouteUri(path);
  if (uri.hasAuthority || uri.hasScheme) {
    throw ArgumentError.value(path, 'path', 'Route patterns must be local');
  }
  _segments = List.unmodifiable(uri.pathSegments);
  final names = <String>{};
  for (final segment in _segments) {
    if (segment.startsWith(':')) {
      final name = segment.substring(1);
      if (!RegExp(r'^[A-Za-z_]\w*$').hasMatch(name) || !names.add(name)) {
        throw ArgumentError.value(
            path, 'path', 'Invalid or duplicate parameter name: $name');
      }
    }
  }
  parameters = Set.unmodifiable(names);
}