splitIntoSentences method Null safety
- 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;
}