getTailEquality static method

String getTailEquality(
  1. List<String> l, {
  2. Pattern? delimiter,
  3. int? minLength,
  4. bool validator(
    1. String s
    )?,
})

Returns the equals tail part of l elements.

Implementation

static String getTailEquality(List<String> l,
    {Pattern? delimiter,
    int? minLength,
    bool Function(String s)? validator}) {
  if (l.length <= 1) return '';

  var min = l.map((e) => e.length).min;
  if (minLength != null && min > minLength) min = minLength;

  var longest = '';
  String? longestWithDelimiter;

  for (var sz = 1; sz < min; ++sz) {
    var s = l[0];
    var tail = s.substring(s.length - sz);

    var matches = true;
    for (var i = 1; i < l.length; ++i) {
      var e = l[i];
      if (!e.endsWith(tail)) {
        matches = false;
        break;
      }
    }

    if (matches && (validator == null || validator(tail))) {
      longest = tail;
      if (delimiter != null && tail.startsWith(delimiter)) {
        longestWithDelimiter = tail;
      }
    }
  }

  return longestWithDelimiter ?? longest;
}