RoutePattern constructor
RoutePattern(
- String pattern
Implementation
factory RoutePattern(String pattern) {
if (!_vrExp.hasMatch(pattern)) {
throw ApiError('Invalid route pattern: $pattern');
}
final patternSegments = pattern.split('/').where((s) => !nullOrEmpty(s));
final segments = <_Segment>[];
var hasWildcard = false;
for (final segment in patternSegments) {
final plMatch = _plExp.firstMatch(segment);
if (plMatch != null) {
segments.add(_PLSegment(
segment,
plMatch.namedGroup(_prefixGroup)!,
plMatch.namedGroup(_keyGroup)!,
plMatch.namedGroup(_optionalGroup)!.isNotEmpty));
continue;
}
if (segment == '*') {
segments.add(_WildcardSegment());
hasWildcard = true;
break;
}
segments.add(_Segment(segment));
}
final matchExp = RegExp(
'^' + segments.map((s) => s.toMatchExp()).join() + '\\/?\$',
caseSensitive: false);
return RoutePattern._(pattern, segments, matchExp, hasWildcard);
}