generate method
Generate username from email or name, date or numbers
Implementation
String generate(String emailOrName,
{List<String> adjectives = const [],
DateTime? date,
bool hasNumbers = true,
int numberSeed = 100,
String prefix = '',
String suffix = '',
bool shortYear = true}) {
// Check if emailOrName is email
if (emailOrName.contains('@')) {
emailOrName = emailOrName
.substring(0, emailOrName.indexOf('@'))
.replaceAll(RegExp(r'[^a-zA-Z\d]'), '');
}
emailOrName = emailOrName
.trim()
.replaceAll(RegExp(r'[^a-zA-Z\d\s]'), ' ')
.replaceAll(RegExp(r'\s{2,}'), ' ')
.replaceAll(' ', separator);
// generate date string
var dateString = '';
if (date != null) {
if (shortYear) {
dateString = date.year.toString().substring(2, 4);
} else {
dateString = date.year.toString();
}
}
var adjective = '';
if (adjectives.isNotEmpty) {
adjective = _getRandomElement(adjectives);
}
var numberString = '';
if (dateString == '' && hasNumbers) {
numberString = _random.nextInt(numberSeed).toString();
}
return [prefix, adjective, emailOrName, dateString, numberString, suffix]
.where((element) => element.isNotEmpty)
.join(separator)
.toLowerCase();
}