parseTable function

({List<String> headers, List<List<String>> rows})? parseTable(
  1. String tableText
)

Parse a markdown table into headers and rows.

Implementation

({List<String> headers, List<List<String>> rows})? parseTable(
  String tableText,
) {
  final lines = tableText.trim().split('\n');
  if (lines.length < 2) return null;

  List<String> parseRow(String line) {
    return line
        .split('|')
        .map((c) => c.trim())
        .where((c) => c.isNotEmpty)
        .toList();
  }

  final headers = parseRow(lines[0]);
  if (headers.isEmpty) return null;

  // Skip separator line (line 1)
  final rows = <List<String>>[];
  for (var i = 2; i < lines.length; i++) {
    final row = parseRow(lines[i]);
    if (row.isNotEmpty) rows.add(row);
  }

  return (headers: headers, rows: rows);
}