generate method

String generate({
  1. String previous = '',
  2. String next = '',
})

Generate a rank based at their neighbors, the previous element and next element.

Implementation

String generate({String previous = '', String next = ''}) {
  String rankGenerated;

  if (previous.length == next.length) {
    var resultPrefix = prefix(previous, next);

    rankGenerated = resultPrefix.response;

    if (resultPrefix.hasSuffix) {
      rankGenerated += alphabet.mean();
    }

    return rankGenerated;
  }

  var order = orderByLength(one: previous, two: next);
  var splitted = splitByShorter(bigger: order[0], shorter: order[1]);

  if (previous.length > next.length) {
    var resultPrefix = prefix(splitted[0], splitted[2]);
    rankGenerated = resultPrefix.response;

    if (resultPrefix.hasSuffix) {
      rankGenerated += suffix(splitted[1], '');
    }

    return rankGenerated;
  }
  // By default previous.length < next.length

  if (next.last() == alphabet.first()) {
    var pref = next.substring(0, next.length - 1);
    //var suff = next.substring(next.length - 1);

    return pref + wildcard + alphabet.mean();
  }

  var resultPrefix = prefix(splitted[2], splitted[0]);
  rankGenerated = resultPrefix.response;

  if (resultPrefix.hasSuffix) {
    rankGenerated += suffix('', splitted[1]);
  }

  return rankGenerated;
}