~alva/moj

022dca887dbd589822e5459cc53760173bd22c25 — ugla 1 year, 7 months ago cb3e901
Improve formatting
1 files changed, 12 insertions(+), 5 deletions(-)

M src/main.zig
M src/main.zig => src/main.zig +12 -5
@@ 36,13 36,17 @@ fn writeMatch(writer: anytype, line: []const u8, needle: []const u8) !void {
        const category = col_it.next() orelse return error.MissingCategory;
        const cp = try std.fmt.parseInt(u21, code, 16);
        const len = try std.unicode.utf8Encode(cp, &utf8_char);
        try writer.print("{s} code: 0x{x:<6} name: {s}\x1b[1m{s}\x1b[0m{s} category: {s}\n", .{
            utf8_char[0..len],
            cp,
        var buf: [1024]u8 = undefined;
        const fancy_name = try std.fmt.bufPrint(&buf, "{s}\x1b[1m{s}\x1b[0m{s}", .{
            name[0..idx],
            name[idx .. idx + needle.len],
            name[idx + needle.len ..],
        });
        try writer.print("0x{x:<6} {s:<40} {s:<4} {s}\n", .{
            cp,
            fancy_name,
            category,
            utf8_char[0..len],
        });
    }
}


@@ 60,6 64,9 @@ test "find poo" {
    var stream = std.io.fixedBufferStream(&out_buf);
    try writeMatches(stream.writer(), "PILE");
    var it = (try std.unicode.Utf8View.init(stream.getWritten())).iterator();
    const cp = it.nextCodepoint() orelse unreachable;
    try std.testing.expectEqual(@as(u21, '💩'), cp);
    var found = false;
    while (it.nextCodepoint()) |cp| {
        if (cp == '💩') found = true;
    }
    try std.testing.expect(found);
}