splitIntoSentences method Null safety

  1. @override
List<String> splitIntoSentences(
  1. String source
)
override

Splits source into sentences at all sentence endings.

Implementation

@override
List<String> splitIntoSentences(String source) {
  // insert the sentence delimiters at sentence breaks
  source = source
      // trim leading and trailing white-space from source
      .trim()
      // replace line feeds and carriage returns with %~%
      .replaceAll(RegExp(English.reLineEndingSelector), _kSentenceDelimiter)
      // select all sentences and replace the ending punctuation with %~%
      .replaceAllMapped(RegExp(English.reLineEndingSelector), (match) {
    final sentence = match.group(0) ?? '';
    // remove white-space before delimiter
    return '$sentence$_kSentenceDelimiter'
        .replaceAll(RegExp(r'(\s+)(?=%~%)'), _kSentenceDelimiter);
  });
  // split into sentence strings
  final sources = source
      // split at _kSentenceDelimiter
      .split(RegExp(_kSentenceDelimiter))
      // trim leading and trailing white-space from all elements
      .map((e) => e.trim())
      // convert to list
      .toList();
  // remove empty sentences
  sources.removeWhere((element) => element.isEmpty);
  // return the sentences
  return sources;
}