tiny.smg.cli.table.rich
Defined in cli.table.
API (2)
Actions
Public operations.
Types and contracts
Public types and contracts.
Source
Source: tools/smg/src/cli/table/rich.zig
zig
const std = @import("std");const smg = @import("../../root.zig");const output = smg.cli.output;pub const Row3 = struct { a: []const u8, b: []const u8, c: []const u8,};pub fn write3(writer: *std.Io.Writer, headers: Row3, rows: []const Row3) !void { const widths = [_]usize{ maxColumn(headers.a, rows, 0) + 1, maxColumn(headers.b, rows, 1) + 2, maxColumn(headers.c, rows, 2) + 1, }; try writeBorder( writer, "\xE2\x94\x8F", "\xE2\x94\xB3", "\xE2\x94\x93", "\xE2\x94\x81", &widths, ); try writeRow( writer, .{ .a = headers.a, .b = headers.b, .c = headers.c }, &widths, "\xE2\x94\x83", "\xE2\x94\x83", ); try writeBorder( writer, "\xE2\x94\xA1", "\xE2\x95\x87", "\xE2\x94\xA9", "\xE2\x94\x81", &widths, ); for (rows) |row| try writeRow(writer, row, &widths, "\xE2\x94\x82", "\xE2\x94\x82"); try writeBorder( writer, "\xE2\x94\x94", "\xE2\x94\xB4", "\xE2\x94\x98", "\xE2\x94\x80", &widths, );}fn maxColumn(header: []const u8, rows: []const Row3, column: usize) usize { var width = header.len; for (rows) |row| { const value = switch (column) { 0 => row.a, 1 => row.b, else => row.c, }; width = @max(width, value.len); } return width;}fn writeBorder( writer: *std.Io.Writer, left: []const u8, mid: []const u8, right: []const u8, fill: []const u8, widths: []const usize,) !void { try output.writeDocText(writer, left); for (widths, 0..) |width, index| { try output.writeRepeatedDoc(writer, fill, width); if (index + 1 == widths.len) { try output.writeDocText(writer, right); } else { try output.writeDocText(writer, mid); } } try output.writeDocHardline(writer);}fn writeRow( writer: *std.Io.Writer, row: Row3, widths: []const usize, edge: []const u8, sep: []const u8,) !void { try output.writeDocText(writer, edge); try writeCell(writer, row.a, widths[0], false); try output.writeDocText(writer, sep); try writeCell(writer, row.b, widths[1], true); try output.writeDocText(writer, sep); try writeCell(writer, row.c, widths[2], true); try output.writeDocText(writer, edge); try output.writeDocHardline(writer);}fn writeCell( writer: *std.Io.Writer, value: []const u8, width: usize, leading_space: bool,) !void { var used: usize = 0; if (leading_space) { try output.writeDocText(writer, " "); used += 1; } try output.writeDocText(writer, value); used += value.len; try output.writeSpacesDoc(writer, width -| used);}Source: tools/smg/src/cli/table/root.zig:3
zig
pub const rich = @import("rich.zig");Audit
| Definitions | 3 |
|---|---|
| Public names | 3 |
| Members | 3 |
| Version | 26.7.0 |
| Revision | daab053ee433 |