format method

  1. @override
String format(
  1. num value
)
override

Formats value into a display string.

Implementation

@override
String format(num value) {
  final integer = _checkedInteger(value, 'Must be a finite integer.');
  if (integer == 0) return _digits[0];
  if (integer < 0) return '負${format(-integer)}';

  final sections = <int>[];
  var rest = integer;
  while (rest > 0) {
    sections.add(rest % 10000);
    rest ~/= 10000;
  }
  if (sections.length > _sectionUnits.length) {
    throw ArgumentError.value(
      value,
      'value',
      'Exceeds supported Japanese section units.',
    );
  }

  final buffer = StringBuffer();
  for (var index = sections.length - 1; index >= 0; index -= 1) {
    final section = sections[index];
    if (section == 0) continue;

    buffer
      ..write(
        _formatSection(
          section,
          beforeSectionUnit: index > 0,
        ),
      )
      ..write(_sectionUnits[index]);
  }

  return buffer.toString();
}