parse function

List<Token> parse(
  1. String path, {
  2. List<String>? parameters,
})

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;
}