chor: use new Writer interface for terminal's Writer; fix test cases
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 3m38s
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 3m38s
This commit is contained in:
@@ -42,27 +42,27 @@ pub fn eql(this: Style, other: Style) bool {
|
||||
|
||||
// TODO might be useful to use the std.ascii stuff!
|
||||
|
||||
pub fn value(this: Style, writer: anytype, cp: u21) !void {
|
||||
pub fn value(this: Style, writer: *std.Io.Writer, cp: u21) !void {
|
||||
var buffer: [4]u8 = undefined;
|
||||
const bytes = try unicode.utf8Encode(cp, &buffer);
|
||||
assert(bytes > 0);
|
||||
// build ansi sequence for 256 colors ...
|
||||
// foreground
|
||||
try format(writer, "\x1b[", .{});
|
||||
try writer.printAscii("\x1b[", .{});
|
||||
try this.fg.write(writer, .fg);
|
||||
// background
|
||||
try format(writer, ";", .{});
|
||||
try writer.printAsciiChar(';', .{});
|
||||
try this.bg.write(writer, .bg);
|
||||
// underline
|
||||
// FIX assert that if the underline property is set that the ul style and the attribute for underlining is available
|
||||
try format(writer, ";", .{});
|
||||
try writer.printAsciiChar(';', .{});
|
||||
try this.ul.write(writer, .ul);
|
||||
// append styles (aka attributes like bold, italic, strikethrough, etc.)
|
||||
for (this.emphasis) |attribute| try format(writer, ";{d}", .{@intFromEnum(attribute)});
|
||||
try format(writer, "m", .{});
|
||||
for (this.emphasis) |attribute| try writer.print(";{d}", .{@intFromEnum(attribute)});
|
||||
try writer.printAsciiChar('m', .{});
|
||||
// content
|
||||
try format(writer, "{s}", .{buffer[0..bytes]});
|
||||
try format(writer, "\x1b[0m", .{});
|
||||
try writer.printAscii(buffer[0..bytes], .{});
|
||||
try writer.printAscii("\x1b[0m", .{});
|
||||
}
|
||||
|
||||
// TODO implement helper functions for terminal capabilities:
|
||||
@@ -73,6 +73,5 @@ const std = @import("std");
|
||||
const unicode = std.unicode;
|
||||
const meta = std.meta;
|
||||
const assert = std.debug.assert;
|
||||
const format = std.fmt.format;
|
||||
const Color = @import("color.zig").Color;
|
||||
const Style = @This();
|
||||
|
||||
Reference in New Issue
Block a user