spell static method
Spells out number in English.
Implementation
static String spell(int number) {
if (number < 0) return 'negative ${spell(-number)}';
if (number < 20) return _ones[number];
if (number < 100) {
final t = number ~/ 10;
final o = number % 10;
return o == 0 ? _tens[t] : '${_tens[t]}-${_ones[o]}';
}
if (number < 1000) {
final h = number ~/ 100;
final rem = number % 100;
return rem == 0
? '${_ones[h]} hundred'
: '${_ones[h]} hundred ${spell(rem)}';
}
for (final scale in _spellScales) {
final divisor = scale[0] as int;
final name = scale[1] as String;
if (number >= divisor) {
final whole = number ~/ divisor;
final rem = number % divisor;
return rem == 0
? '${spell(whole)} $name'
: '${spell(whole)} $name ${spell(rem)}';
}
}
return number.toString();
}