formatIntegerPart static method

String formatIntegerPart(
  1. String digits,
  2. NumberGroupingSystem system
)

Formats an unformatted integer digit string according to NumberGroupingSystem.

Implementation

static String formatIntegerPart(String digits, NumberGroupingSystem system) {
  if (digits.isEmpty) return '';
  if (system == NumberGroupingSystem.none) return digits;

  if (system == NumberGroupingSystem.international) {
    final buffer = StringBuffer();
    int count = 0;
    for (int i = digits.length - 1; i >= 0; i--) {
      buffer.write(digits[i]);
      count++;
      if (count % 3 == 0 && i > 0) {
        buffer.write(',');
      }
    }
    return buffer.toString().split('').reversed.join('');
  }

  if (system == NumberGroupingSystem.indian) {
    if (digits.length <= 3) return digits;
    final lastThree = digits.substring(digits.length - 3);
    final remaining = digits.substring(0, digits.length - 3);

    final buffer = StringBuffer();
    int count = 0;
    for (int i = remaining.length - 1; i >= 0; i--) {
      buffer.write(remaining[i]);
      count++;
      if (count % 2 == 0 && i > 0) {
        buffer.write(',');
      }
    }
    final formattedRemaining = buffer.toString().split('').reversed.join('');
    return '$formattedRemaining,$lastThree';
  }

  return digits;
}