diff options
| author | 2024-02-18 11:14:43 -0400 | |
|---|---|---|
| committer | 2024-02-18 11:14:43 -0400 | |
| commit | 6c7da0b526959840240177c0defb680e76fecad6 (patch) | |
| tree | 78c426747ebd23f1e0034798f29c37d1a5893826 /src/Grapheme.zig | |
| parent | Rename to zg (diff) | |
| download | zg-6c7da0b526959840240177c0defb680e76fecad6.tar.gz zg-6c7da0b526959840240177c0defb680e76fecad6.tar.xz zg-6c7da0b526959840240177c0defb680e76fecad6.zip | |
Testing Ghostty's Utf8Decoder. A bit slower
Diffstat (limited to 'src/Grapheme.zig')
| -rw-r--r-- | src/Grapheme.zig | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/src/Grapheme.zig b/src/Grapheme.zig index 6981753..f013aba 100644 --- a/src/Grapheme.zig +++ b/src/Grapheme.zig | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const unicode = std.unicode; | 2 | const unicode = std.unicode; |
| 3 | 3 | ||
| 4 | const CodePoint = @import("code_point").CodePoint; | ||
| 4 | const CodePointIterator = @import("code_point").Iterator; | 5 | const CodePointIterator = @import("code_point").Iterator; |
| 5 | const gbp = @import("gbp"); | 6 | const gbp = @import("gbp"); |
| 6 | 7 | ||
| @@ -16,13 +17,6 @@ pub const Grapheme = struct { | |||
| 16 | } | 17 | } |
| 17 | }; | 18 | }; |
| 18 | 19 | ||
| 19 | // We need the code as a u21. | ||
| 20 | const CodePoint = struct { | ||
| 21 | code: u21, | ||
| 22 | len: u3, | ||
| 23 | offset: u32, | ||
| 24 | }; | ||
| 25 | |||
| 26 | /// `Iterator` iterates a sting of UTF-8 encoded bytes one grapheme cluster at-a-time. | 20 | /// `Iterator` iterates a sting of UTF-8 encoded bytes one grapheme cluster at-a-time. |
| 27 | pub const Iterator = struct { | 21 | pub const Iterator = struct { |
| 28 | buf: [2]?CodePoint = .{ null, null }, | 22 | buf: [2]?CodePoint = .{ null, null }, |
| @@ -39,13 +33,7 @@ pub const Iterator = struct { | |||
| 39 | 33 | ||
| 40 | fn advance(self: *Self) void { | 34 | fn advance(self: *Self) void { |
| 41 | self.buf[0] = self.buf[1]; | 35 | self.buf[0] = self.buf[1]; |
| 42 | 36 | self.buf[1] = self.cp_iter.next(); | |
| 43 | const maybe_cp = self.cp_iter.next(); | ||
| 44 | self.buf[1] = if (maybe_cp) |cp| .{ | ||
| 45 | .code = cp.code(self.cp_iter.bytes), | ||
| 46 | .len = cp.len, | ||
| 47 | .offset = cp.offset, | ||
| 48 | } else null; | ||
| 49 | } | 37 | } |
| 50 | 38 | ||
| 51 | pub fn next(self: *Self) ?Grapheme { | 39 | pub fn next(self: *Self) ?Grapheme { |