plainTextLength property

int get plainTextLength

Длина текста без символов новой строки.

Семантика сохранена: переносы строк не учитываются, embed-объекты считаются как 1 символ. Единственный проход без выделения строк — O(n) по времени, O(1) по памяти.

Implementation

int get plainTextLength {
  var length = 0;
  for (final op in operations) {
    if (!op.isInsert) continue;
    final data = op.data;
    if (data is String) {
      for (var i = 0; i < data.length; i++) {
        if (data[i] != '\n') length++;
      }
    } else if (data is Map) {
      length++;
    }
  }
  return length;
}