keyGet2Func function

String keyGet2Func(
  1. String key1,
  2. String key2,
  3. String pathVar
)

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