a modern tui library written in zig
1const std = @import("std");
2const grapheme = @import("grapheme");
3const DisplayWidth = @import("DisplayWidth");
4
5/// A thin wrapper around zg data
6const Unicode = @This();
7
8grapheme_data: grapheme.GraphemeData,
9width_data: DisplayWidth.DisplayWidthData,
10
11/// initialize all unicode data vaxis may possibly need
12pub fn init(alloc: std.mem.Allocator) !Unicode {
13 return .{
14 .grapheme_data = try grapheme.GraphemeData.init(alloc),
15 .width_data = try DisplayWidth.DisplayWidthData.init(alloc),
16 };
17}
18
19/// free all data
20pub fn deinit(self: *const Unicode) void {
21 self.grapheme_data.deinit();
22 self.width_data.deinit();
23}
24
25/// creates a grapheme iterator based on str
26pub fn graphemeIterator(self: *const Unicode, str: []const u8) grapheme.Iterator {
27 return grapheme.Iterator.init(str, &self.grapheme_data);
28}