applyTextTransformWithCarry static method

(String, bool) applyTextTransformWithCarry(
  1. String input,
  2. TextTransform transform,
  3. bool atWordStart
)

Implementation

static (String, bool) applyTextTransformWithCarry(String input, TextTransform transform, bool atWordStart) {
  if (input.isEmpty || transform == TextTransform.none) return (input, atWordStart);
  switch (transform) {
    case TextTransform.uppercase:
      final out = input.toUpperCase();
      return (out, out.isNotEmpty ? isWordBoundary(out.codeUnitAt(out.length - 1)) : atWordStart);
    case TextTransform.lowercase:
      final out = input.toLowerCase();
      return (out, out.isNotEmpty ? isWordBoundary(out.codeUnitAt(out.length - 1)) : atWordStart);
    case TextTransform.capitalize:
      final sb = StringBuffer();
      bool aws = atWordStart;
      for (int i = 0; i < input.length; i++) {
        final cu = input.codeUnitAt(i);
        final ch = String.fromCharCode(cu);
        if (aws) {
          sb.write(ch.toUpperCase());
          aws = false;
        } else {
          sb.write(ch);
        }
        if (isWordBoundary(cu)) aws = true;
      }
      final out = sb.toString();
      return (out, aws);
    case TextTransform.none:
      return (input, atWordStart);
  }
}