tiny.markdown.parseTable
Defined in table.
Source
Source: lib/markdown/src/table.zig:86
zig
pub fn parse(storage: *Storage, source: []const u8) Result { var cursor: usize = 0; const header_line = nextLine(source, &cursor) orelse return .paragraph; const delimiter_line = nextLine(source, &cursor) orelse return .paragraph; const header_info = scanRow(source, header_line.content, null); if (!header_info.has_pipe or header_info.cells == 0) return .paragraph; const delimiter_info = scanDelimiter(source, delimiter_line.content, null); if (!delimiter_info.has_pipe or !delimiter_info.valid or delimiter_info.cells != header_info.cells) { return .paragraph; } if (header_info.cells > max_columns) return .{ .rejected = .columns }; const columns = header_info.cells; _ = scanRow(source, header_line.content, storage.cells[0..columns]); _ = scanDelimiter(source, delimiter_line.content, storage.alignments[0..columns]); storage.rows[0] = .{ .source = header_line.content, .cells = storage.cells[0..columns], }; var row_count: usize = 1; var cell_count = columns; var table_end = delimiter_line.next; while (nextLine(source, &cursor)) |line| { const trimmed = trimRange(source, line.content); if (trimmed.start == trimmed.end) break; const info = scanRow(source, line.content, null); if (!info.has_pipe) break; if (info.cells > max_columns) return .{ .rejected = .columns }; if (info.cells != columns) return .paragraph; if (row_count == max_rows) return .{ .rejected = .rows }; std.debug.assert(cell_count <= max_cells - columns); const cells = storage.cells[cell_count..][0..columns]; _ = scanRow(source, line.content, cells); storage.rows[row_count] = .{ .source = line.content, .cells = cells }; row_count += 1; cell_count += columns; table_end = line.next; } std.debug.assert(row_count <= max_rows); std.debug.assert(cell_count == row_count * columns); return .{ .table = .{ .source = .{ .start = 0, .end = table_end }, .header = storage.rows[0], .delimiter = .{ .source = delimiter_line.content, .alignments = storage.alignments[0..columns], }, .body = storage.rows[1..row_count], } };}Source: lib/markdown/src/root.zig:39
zig
pub const parseTable = table.parse;Audit
| Definitions | 1 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |