textHandler function
Handles text extraction for single or multiple elements
Handles special cases like
tags in HTML content
Implementation
Object? textHandler(Parser parser, Element source, {required String selectr}) {
List<String> results = [];
if (parser.multiple) {
// Extract text from all matching elements
List<Element> selector = source.querySelectorAll(selectr);
if (selector.isNotEmpty) {
for (final s in selector) {
// Handle <br> tags by replacing them with spaces
if (s.innerHtml.contains("<br>")) {
String outerHtml = s.outerHtml.replaceAll("<br>", " ");
Document outerDom = parse(outerHtml);
results.add(outerDom.body!.text.toString().trim());
} else {
results.add(s.text.toString().trim());
}
}
// Remove empty results
results.removeWhere((value) => value == "");
return results;
}
} else {
// Extract text from single element
Element? selector = source.querySelector(selectr);
if (selector != null) {
if (selector.text.toString().trim() != "") {
return selector.text.toString().trim();
}
}
}
return null;
}