textHandler function

Object? textHandler(
  1. Parser parser,
  2. Element source, {
  3. required String selectr,
})

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;
}