internal bool StartTable(TableSpec spec, List<Block> lines) { // Rewind, parse the header row then fast forward back to current pos if (lines.Count >= 1) { int savepos = position; position = lines[0].lineStart; for (var i = 0; i < lines.Count; i++) { var row = spec.ParseRow(this); if (row == null) break; spec.Headers.Add(row); } if (spec.Headers.Count != lines.Count) return false; position = savepos; lines.Clear(); } // Parse all rows while (true) { int savepos = position; var row=spec.ParseRow(this); if (row!=null) { spec.Rows.Add(row); continue; } position = savepos; break; } return true; }