evaluate method

  1. @override
MatcherEvaluation evaluate(
  1. PartialUri uri
)
override

Implementation

@override
MatcherEvaluation evaluate(PartialUri uri) {
  var uriSegments = uri.pathSegments;
  // filter out a trailing '/'
  if (uriSegments.isNotEmpty && uriSegments.last.isEmpty) {
    uriSegments = uriSegments.sublist(0, uriSegments.length - 1).toList();
  }

  if (pathSegments.length > uriSegments.length) {
    return MatcherEvaluation.noMatcher();
  }

  final params = <String, String>{};
  for (var i = 0; i < pathSegments.length; i++) {
    final segment = pathSegments[i];
    final toMatcher = uriSegments[i];

    if (segment.startsWith('{') && segment.endsWith('}')) {
      params[segment.substring(1, segment.length - 1)] = toMatcher;
    } else if (segment == toMatcher) {
      continue;
    } else {
      return MatcherEvaluation.noMatcher();
    }
  }

  return MatcherEvaluation.match(
    remainingUri: uri.copyWith(removeFirstPathSegments: pathSegments.length),
    parameters: params,
  );
}