in lib/src/block_parser.dart [886:923]
Node? parse(BlockParser parser) {
var alignments = _parseAlignments(parser.next!);
var columnCount = alignments.length;
var headRow = _parseRow(parser, alignments, 'th');
if (headRow.children!.length != columnCount) {
return null;
}
var head = Element('thead', [headRow]);
// Advance past the divider of hyphens.
parser.advance();
var rows = <Element>[];
while (!parser.isDone && !BlockSyntax.isAtBlockEnd(parser)) {
var row = _parseRow(parser, alignments, 'td');
var children = row.children;
if (children != null) {
while (children.length < columnCount) {
// Insert synthetic empty cells.
children.add(Element.empty('td'));
}
while (children.length > columnCount) {
children.removeLast();
}
}
while (row.children!.length > columnCount) {
row.children!.removeLast();
}
rows.add(row);
}
if (rows.isEmpty) {
return Element('table', [head]);
} else {
var body = Element('tbody', rows);
return Element('table', [head, body]);
}
}