mirror of
https://github.com/sbrow/envr.git
synced 2026-06-27 10:38:33 -04:00
fix: Fixed issue with buffer size.
This commit is contained in:
@@ -27,38 +27,37 @@ pub fn Table(
|
|||||||
|
|
||||||
// Print body
|
// Print body
|
||||||
for (self.items) |item| {
|
for (self.items) |item| {
|
||||||
_ = try writer.write(sep);
|
try writer.writeAll(sep);
|
||||||
|
|
||||||
comptime var itr = fields.iterator();
|
comptime var itr = fields.iterator();
|
||||||
comptime var i: usize = 0;
|
comptime var i: usize = 0;
|
||||||
inline while (comptime itr.next()) |c| : (i += 1) {
|
inline while (comptime itr.next()) |c| : (i += 1) {
|
||||||
_ = try writer.write(" ");
|
try writer.writeByte(' ');
|
||||||
try write_aligned(writer, @field(item, @tagName(c)), max_column_widths[i], .left);
|
try write_aligned(writer, @field(item, @tagName(c)), max_column_widths[i], .left);
|
||||||
try writer.print(" {s}", .{sep});
|
try writer.print(" {s}", .{sep});
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = try writer.write("\n");
|
try writer.writeAll("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print post-body
|
// Print post-body
|
||||||
{
|
{
|
||||||
_ = try writer.write(bl);
|
try writer.writeAll(bl);
|
||||||
|
|
||||||
var itr = fields.iterator();
|
var itr = fields.iterator();
|
||||||
var i: usize = 0;
|
var i: usize = 0;
|
||||||
while (itr.next()) |_| : (i += 1) {
|
while (itr.next()) |_| : (i += 1) {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
_ = try writer.write(bm);
|
try writer.writeAll(bm);
|
||||||
}
|
}
|
||||||
|
|
||||||
const padding = max_column_widths[i] + 2;
|
const padding = max_column_widths[i] + 2;
|
||||||
for (0..padding) |_| {
|
for (0..padding) |_| {
|
||||||
_ = try writer.write(hor);
|
try writer.writeAll(hor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = try writer.write(br);
|
try writer.writeAll(br ++ "\n");
|
||||||
_ = try writer.write("\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -96,29 +95,29 @@ fn header(
|
|||||||
|
|
||||||
// Print Pre-Header
|
// Print Pre-Header
|
||||||
{
|
{
|
||||||
_ = try writer.write(tl);
|
try writer.writeAll(tl);
|
||||||
|
|
||||||
inline for (0..comptime fields.count()) |i| {
|
inline for (0..comptime fields.count()) |i| {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
_ = try writer.write(tm);
|
try writer.writeAll(tm);
|
||||||
}
|
}
|
||||||
const padding = max_column_widths[i] + 2;
|
const padding = max_column_widths[i] + 2;
|
||||||
for (0..padding) |_| {
|
for (0..padding) |_| {
|
||||||
_ = try writer.write(hor);
|
try writer.writeAll(hor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = try writer.write(tr ++ "\n");
|
try writer.writeAll(tr ++ "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main Header
|
// Main Header
|
||||||
{
|
{
|
||||||
_ = try writer.write(sep);
|
try writer.writeAll(sep);
|
||||||
|
|
||||||
comptime var itr = fields.iterator();
|
comptime var itr = fields.iterator();
|
||||||
comptime var i: usize = 0;
|
comptime var i: usize = 0;
|
||||||
inline while (comptime itr.next()) |field| : (i += 1) {
|
inline while (comptime itr.next()) |field| : (i += 1) {
|
||||||
_ = try writer.write(" ");
|
try writer.writeByte(' ');
|
||||||
try write_aligned(
|
try write_aligned(
|
||||||
writer,
|
writer,
|
||||||
@tagName(field),
|
@tagName(field),
|
||||||
@@ -128,24 +127,24 @@ fn header(
|
|||||||
try writer.print(" {s}", .{sep});
|
try writer.print(" {s}", .{sep});
|
||||||
}
|
}
|
||||||
|
|
||||||
try writer.print("\n", .{});
|
try writer.writeByte('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print post-header
|
// Print post-header
|
||||||
{
|
{
|
||||||
_ = try writer.write(ml);
|
try writer.writeAll(ml);
|
||||||
|
|
||||||
inline for (0..comptime fields.count()) |i| {
|
inline for (0..comptime fields.count()) |i| {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
_ = try writer.write(mm);
|
try writer.writeAll(mm);
|
||||||
}
|
}
|
||||||
const padding = max_column_widths[i] + 2;
|
const padding = max_column_widths[i] + 2;
|
||||||
for (0..padding) |_| {
|
for (0..padding) |_| {
|
||||||
_ = try writer.write(hor);
|
try writer.writeAll(hor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = try writer.write(mr ++ "\n");
|
try writer.writeAll(mr ++ "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,6 +154,9 @@ fn write_aligned(
|
|||||||
max_width: usize,
|
max_width: usize,
|
||||||
alignment: Alignment,
|
alignment: Alignment,
|
||||||
) !void {
|
) !void {
|
||||||
|
std.debug.assert(data.len > 0);
|
||||||
|
std.debug.assert(max_width >= data.len);
|
||||||
|
|
||||||
const padding: [2]usize = switch (alignment) {
|
const padding: [2]usize = switch (alignment) {
|
||||||
.left => .{ 0, max_width - data.len },
|
.left => .{ 0, max_width - data.len },
|
||||||
.right => .{ max_width - data.len, 0 },
|
.right => .{ max_width - data.len, 0 },
|
||||||
@@ -166,13 +168,13 @@ fn write_aligned(
|
|||||||
};
|
};
|
||||||
|
|
||||||
for (0..padding[0]) |_| {
|
for (0..padding[0]) |_| {
|
||||||
_ = try writer.write(" ");
|
try writer.writeByte(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = try writer.write(data);
|
try writer.writeAll(data);
|
||||||
|
|
||||||
for (0..padding[1]) |_| {
|
for (0..padding[1]) |_| {
|
||||||
_ = try writer.write(" ");
|
try writer.writeByte(' ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user