convertToIntegerModifier function

  1. @visibleForTesting
int convertToIntegerModifier(
  1. Object? modifierObj
)

See rules stated in localizePlural's documentation.

Implementation

@visibleForTesting
int convertToIntegerModifier(Object? modifierObj) {
  //
  if (modifierObj is! int && modifierObj is! double) {
    String modifierStr = modifierObj.toString();
    modifierStr = modifierStr.replaceAll(RegExp(r'[^0-9\.]'), ' ');

    modifierObj = int.tryParse(modifierStr);
    modifierObj ??= double.tryParse(modifierStr) ?? 0.0;
  }

  if (modifierObj is double) {
    modifierObj = modifierObj.abs();

    if (modifierObj == 1.0)
      return 1;
    else if (modifierObj < 1.0)
      return 0;
    else
      return modifierObj.ceil();
  }
  //
  else if (modifierObj is int)
    return modifierObj.abs();
  //
  else
    throw AssertionError(modifierObj);
}