evaluate method
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,
);
}