parse function
Parses a path
specification.
Parameter names are added, in order, to parameters
if provided.
Implementation
List<Token> parse(String path, {List<String>? parameters}) {
final matches = _parameterRegExp.allMatches(path);
final tokens = <Token>[];
var start = 0;
for (final match in matches) {
if (match.start > start) {
tokens.add(PathToken(path.substring(start, match.start)));
}
final name = match[1]!;
final optionalPattern = match[2];
final pattern = optionalPattern != null
? escapeGroup(optionalPattern)
: _defaultPattern;
tokens.add(ParameterToken(name, pattern: pattern));
parameters?.add(name);
start = match.end;
}
if (start < path.length) {
tokens.add(PathToken(path.substring(start)));
}
return tokens;
}