keyGet2Func function
KeyGet2 returns value matched pattern.For example, "/resource1" matches "/:resource",
if the pathVar == "resource", then "resource1" will be returned.
key1
the first argument.
key2
the second argument.
return the matched part.
Implementation
String keyGet2Func(String key1, String key2, String pathVar) {
key2 = key2.replaceAll('/*', '/.*');
var regex = RegExp(':[^/]+');
var keys = regex.allMatches(key2).toList();
var keyList = <String>[];
for (var i = 0; i < keys.length; i++) {
keyList.add(keys[i].group(0)!);
}
key2 = key2.replaceAll(regex, '([^/]+)');
key2 = '^' + key2 + '\$';
var values = RegExp(key2).allMatches(key1).toList();
var valueList = <String>[];
for (var i = 0; i < values.length; i++) {
for (var j = 0; j <= values[i].groupCount; j++) {
valueList.add(values[i].group(j)!);
}
}
if (valueList.isEmpty) {
return '';
}
for (var i = 0; i < keyList.length; i++) {
if (pathVar == keyList[i].substring(1)) {
return valueList[i + 1];
}
}
return '';
}