generate method
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;
}