summaryrefslogtreecommitdiff
path: root/src/Normalizer.zig
diff options
context:
space:
mode:
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,