terbilang method

String terbilang(
  1. double value
)

Implementation

String terbilang(double value) {
  final number = value.toStringAsFixed(0);
  final len = number.length;
  String result = "";
  for (var i = 0; i < len; i++) {
    final length = len - i;
    final delimiter = CheckUtils().pointer(length);

    if (delimiter == 3) {
      if (number[i].isNol) continue;
      result += _ratusan(number[i], currIndex: i, len: len, number: number);
    } else if (delimiter == 2) {
      if (number[i].isSatu && !number[i + 1].isNol) {
        result += belasan(number[i], currIndex: i, len: len, number: number);
      } else {
        if (number[i].isNol) continue;

        result += _puluhan(number[i], number[i + 1]);
      }
    } else if (delimiter == 1) {
      if (len > 1) {
        try {
          if (number[i - 1].isSatu) {
            // continue;
          } else {
            result += _satuan(number[i]);
          }
        } catch (e) {
          if (e is RangeError) {
            if (length >= 7 && number[i].isSatu) {
              result += _satuan(number[i], isJutaan: true);
            } else {
              // seribu
              result += _satuan(number[i], unique: true);
            }
          }
        }
      }
      if (len == 1) {
        result += _satuan(number[i]);
      }
    }

    if (length == 10) {
      final tripleZero =
          CheckUtils().checkZero(number: number, len: len, currIndex: i);
      if (tripleZero == 3) continue;
      result += _miliaran(number[i], currIndex: i, len: len, number: number);
    } else if (length == 7) {
      final tripleZero =
          CheckUtils().checkZero(number: number, len: len, currIndex: i);
      if (tripleZero == 3) continue;
      result += _jutaan(number[i], currIndex: i, len: len, number: number);
    } else if (length == 4) {
      final tripleZero =
          CheckUtils().checkZero(number: number, len: len, currIndex: i);
      if (tripleZero == 3) continue;

      result += _ribuan(number[i], currIndex: i, len: len, number: number);
    }
  }
  result = result.replaceAll("  ", " ");
  return result;
}