groupIntoWords property

List<String> groupIntoWords

Implementation

List<String> get groupIntoWords {
  var sb = StringBuffer();
  var words = <String>[];
  var isAllCaps = toUpperCase() == this;

  for (var i = 0; i < length; i++) {
    var char = this[i];
    var nextChar = i + 1 == length ? null : this[i + 1];
    if (_symbolSet.contains(char)) {
      continue;
    }
    sb.write(char);
    var isEndOfWord = nextChar == null ||
        (_upperAlphaRegex.hasMatch(nextChar) && !isAllCaps) ||
        _symbolSet.contains(nextChar);
    if (isEndOfWord) {
      words.add('$sb');
      sb.clear();
    }
  }
  return words;
}