From 95bc908ed25be9fa597c559791cbf6d5f5a6b8ed Mon Sep 17 00:00:00 2001 From: Jose Colon Rodriguez Date: Wed, 14 Feb 2024 12:11:07 -0400 Subject: Removed readCodePoint and StreamingGraphemeIterator --- src/CodePoint.zig | 50 -------------------------------------------------- 1 file changed, 50 deletions(-) (limited to 'src/CodePoint.zig') diff --git a/src/CodePoint.zig b/src/CodePoint.zig index e72823b..c03ecac 100644 --- a/src/CodePoint.zig +++ b/src/CodePoint.zig @@ -79,53 +79,3 @@ test "CodePointIterator peek" { try std.testing.expectEqual(@as(?CodePoint, null), iter.peek()); try std.testing.expectEqual(@as(?CodePoint, null), iter.next()); } - -/// `readCodePoint` returns the next code point code as a `u21` in the given reader, or null at end-of-input. -pub fn readCodePoint(reader: anytype) !?u21 { - var buf: [4]u8 = undefined; - - buf[0] = reader.readByte() catch |err| switch (err) { - error.EndOfStream => return null, - else => return err, - }; - - if (buf[0] < 128) return @as(u21, buf[0]); - - const len: u3 = switch (buf[0]) { - 0b1100_0000...0b1101_1111 => 2, - 0b1110_0000...0b1110_1111 => 3, - 0b1111_0000...0b1111_0111 => 4, - else => return error.InvalidUtf8, - }; - - const read = try reader.read(buf[1..len]); - - if (read < len - 1) return error.InvalidUtf8; - - return switch (len) { - 2 => (@as(u21, (buf[0] & 0b00011111)) << 6) | (buf[1] & 0b00111111), - - 3 => (((@as(u21, (buf[0] & 0b00001111)) << 6) | - (buf[1] & 0b00111111)) << 6) | - (buf[2] & 0b00111111), - - 4 => (((((@as(u21, (buf[0] & 0b00000111)) << 6) | - (buf[1] & 0b00111111)) << 6) | - (buf[2] & 0b00111111)) << 6) | - (buf[3] & 0b00111111), - - else => @panic("readCodePoint invalid code point length."), - }; -} - -test "readCodePoint" { - var buf = "abé😹".*; - var fis = std.io.fixedBufferStream(&buf); - const reader = fis.reader(); - - try std.testing.expectEqual(@as(u21, 'a'), (try readCodePoint(reader)).?); - try std.testing.expectEqual(@as(u21, 'b'), (try readCodePoint(reader)).?); - try std.testing.expectEqual(@as(u21, 'é'), (try readCodePoint(reader)).?); - try std.testing.expectEqual(@as(u21, '😹'), (try readCodePoint(reader)).?); - try std.testing.expectEqual(@as(?u21, null), try readCodePoint(reader)); -} -- cgit v1.2.3