summaryrefslogtreecommitdiff
path: root/src/Normalizer.zig
diff options
context:
space:
mode:
authorGravatar Jose Colon Rodriguez2024-03-01 20:49:49 -0400
committerGravatar Jose Colon Rodriguez2024-03-01 20:49:49 -0400
commit68b01d794dcf145fb11603a238c647b7ca998f84 (patch)
tree5758ec9f6622105d4df7e2990c0e4708530d44ff /src/Normalizer.zig
parentMoved case fold stuff to src/Caser.zig (diff)
downloadzg-68b01d794dcf145fb11603a238c647b7ca998f84.tar.gz
zg-68b01d794dcf145fb11603a238c647b7ca998f84.tar.xz
zg-68b01d794dcf145fb11603a238c647b7ca998f84.zip
Added canonical caseless match to Caser
Diffstat (limited to 'src/Normalizer.zig')
-rw-r--r--src/Normalizer.zig25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/Normalizer.zig b/src/Normalizer.zig
index 3ff157c..b5a54d1 100644
--- a/src/Normalizer.zig
+++ b/src/Normalizer.zig
@@ -343,6 +343,31 @@ test "nfkd !ASCII / alloc" {
343 try testing.expectEqualStrings("He\u{301}llo World! \u{3a5}\u{301}", result.slice); 343 try testing.expectEqualStrings("He\u{301}llo World! \u{3a5}\u{301}", result.slice);
344} 344}
345 345
346pub fn nfdCodePoints(
347 self: Self,
348 allocator: mem.Allocator,
349 cps: []const u21,
350) ![]u21 {
351 var dcp_list = std.ArrayList(u21).init(allocator);
352 defer dcp_list.deinit();
353
354 var dc_buf: [18]u21 = undefined;
355
356 for (cps) |cp| {
357 const dc = self.decompose(cp, .nfd, &dc_buf);
358
359 if (dc.form == .same) {
360 try dcp_list.append(cp);
361 } else {
362 try dcp_list.appendSlice(dc.cps);
363 }
364 }
365
366 self.canonicalSort(dcp_list.items);
367
368 return try dcp_list.toOwnedSlice();
369}
370
346pub fn nfkdCodePoints( 371pub fn nfkdCodePoints(
347 self: Self, 372 self: Self,
348 allocator: mem.Allocator, 373 allocator: mem.Allocator,