Skip to documentation
SLOP

tiny.markdown.parseTable

Reference tiny.markdown parseTable

Defined in table.

Called byCallstest sourcelib.markdown.src.tabletest: pipe table accepts maximum colu...test sourcelib.markdown.src.tabletest: pipe table accepts maximum rows...test sourcelib.markdown.src.tabletest: pipe table classifies delimiter...test sourcelib.markdown.src.tabletest: pipe table classifies header de...test sourcelib.markdown.src.tabletest: pipe table keeps degenerate can...private sourcelib.markdown.src.tablenextLineprivate sourcelib.markdown.src.tablescanDelimiterprivate sourcelib.markdown.src.tablescanRowprivate sourcelib.markdown.src.tabletrimRangetableparse
Static calls · unresolved targets: 0 · external targets: 0.

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

Definitions1
Public names2
Members0
Version26.7.0
Revisiondaab053ee433