add method

StringStatistics? add(
  1. String? str, {
  2. bool? ignorePunctuation = false,
  3. bool? end = false,
  4. bool? filterNonChars = true,
})

Add another string to be processed, returns the counts collection. filterNonChars removes non-chars from count. end indicates final word to flush buffers and finalize count. ignorePunctuation facilitates checking words that include symbols.

Implementation

StringStatistics? add(String? str,
    {bool? ignorePunctuation = false,
    bool? end = false,
    bool? filterNonChars = true}) {
  if (stats == null) {
    stats = statistics(str!,
        leftOvers: _buffer.toString(),
        continues: !end!,
        ignorePunctuation: ignorePunctuation!,
        inWord: _inWord,
        filterNonChars: filterNonChars!);
  } else {
    stats = stats!.combine(statistics(str!,
        leftOvers: _buffer.toString(),
        continues: !end!,
        ignorePunctuation: ignorePunctuation!,
        inWord: _inWord,
        filterNonChars: filterNonChars!));
  }
  for (var i = str.length - 1; i >= 0; i--) {
    if (str[i].isWhiteSpace || (!ignorePunctuation && str[i].isPunctuation)) {
      _buffer.clear();
      if (i != str.length - 1) {
        _buffer.write(str.substring(i + 1));
      }
      break;
    }
    if (i == 0) {
      _buffer.write(str);
    }
  }

  final lastChar = str[str.length - 1];
  var punctuationContinue = !ignorePunctuation && !lastChar.isPunctuation;
  if (lastChar.isChar && !lastChar.isWhiteSpace && punctuationContinue) {
    _inWord = true;
  } else {
    _inWord = false;
  }
  return stats;
}