From f696490ad2f8d23745f849d6c74e1fa642864288 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 22 Dec 2022 16:09:03 -0800 Subject: [PATCH] add NamedSequencesProv, closes #24 --- generate.zig | 1 + scripts/NamedSequencesProv.zig | 38 ++++++++++++++++++++++++++++++++++ src/lib.zig | 1 + src/main.zig | 1 + src/named_sequences_prov.zig | 33 +++++++++++++++++++++++++++++ 5 files changed, 74 insertions(+) create mode 100644 scripts/NamedSequencesProv.zig create mode 100644 src/named_sequences_prov.zig diff --git a/generate.zig b/generate.zig index 1d43c39f51fee44b5eaf57a984de8e5d06ff3d7c..1f1cc9cd29b6994971c206bdddc4a3f4ef5884d5 100644 --- a/generate.zig +++ b/generate.zig @@ -20,6 +20,7 @@ const files = [_]type{ @import("./scripts/LineBreak.zig"), @import("./scripts/NameAliases.zig"), @import("./scripts/NamedSequences.zig"), + @import("./scripts/NamedSequencesProv.zig"), }; pub fn main() !void { diff --git a/scripts/NamedSequencesProv.zig b/scripts/NamedSequencesProv.zig new file mode 100644 index 0000000000000000000000000000000000000000..5e3249ff1bbd16bb3dc345141d0ba65c57ee4176 --- /dev/null +++ b/scripts/NamedSequencesProv.zig @@ -0,0 +1,38 @@ +const std = @import("std"); +const common = @import("./_common.zig"); + +pub usingnamespace common.Main(struct { + pub const source_file = "NamedSequencesProv"; + + pub const dest_file = "src/named_sequences_prov.zig"; + + pub const dest_header = + \\pub const NamedSequence = struct { + \\ name: []const u8, + \\ sequence: []const u21, + \\}; + \\ + \\pub const data = [_]NamedSequence{ + \\ + ; + + pub const dest_footer = + \\}; + \\ + ; + + pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !bool { + _ = alloc; + var it = std.mem.split(u8, line, ";"); + + try writer.print(" .{{ .name = \"{}\", .sequence = &[_]u21{{", .{std.zig.fmtEscapes(it.next().?)}); + + var jt = std.mem.tokenize(u8, it.next().?, " "); + while (jt.next()) |jtem| { + try writer.print(" 0x{s},", .{jtem}); + } + try writer.writeAll(" } },\n"); + + return true; + } +}); diff --git a/src/lib.zig b/src/lib.zig index 41c94e3d7110afdfb56798399ce3fb27762c7e5d..c3119ec52ea3e8002a727476f09c0ba9b2faa0cc 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -21,3 +21,4 @@ pub const jamo = @import("./jamo.zig"); pub const line_break = @import("./line_break.zig"); pub const name_aliases = @import("./name_aliases.zig"); pub const named_sequences = @import("./named_sequences.zig"); +pub const named_sequences_prov = @import("./named_sequences_prov.zig"); diff --git a/src/main.zig b/src/main.zig index 78b55fb970c884803bf752ce14e11954928a851f..aba50ea1c783bb0a0d97dfb97cbca4e9036f8e9d 100644 --- a/src/main.zig +++ b/src/main.zig @@ -25,6 +25,7 @@ pub fn main() !void { ucd.line_break, ucd.name_aliases, ucd.named_sequences, + ucd.named_sequences_prov, }; inline for (data) |b| { diff --git a/src/named_sequences_prov.zig b/src/named_sequences_prov.zig new file mode 100644 index 0000000000000000000000000000000000000000..b6340934a90ea3854f93bb55d19e4a2628699c61 --- /dev/null +++ b/src/named_sequences_prov.zig @@ -0,0 +1,33 @@ +// This file is part of the Unicode Character Database +// For documentation, see http://www.unicode.org/reports/tr44/ +// +// Based on the source file: https://unicode.org/Public/13.0.0/ucd/NamedSequencesProv.txt +// +// zig fmt: off + +pub const NamedSequence = struct { + name: []const u8, + sequence: []const u21, +}; + +pub const data = [_]NamedSequence{ + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER QA", .sequence = &[_]u21{ 0x0915, 0x093C, } }, + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER KHHA", .sequence = &[_]u21{ 0x0916, 0x093C, } }, + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER GHHA", .sequence = &[_]u21{ 0x0917, 0x093C, } }, + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER ZA", .sequence = &[_]u21{ 0x091C, 0x093C, } }, + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER DDDHA", .sequence = &[_]u21{ 0x0921, 0x093C, } }, + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER RHA", .sequence = &[_]u21{ 0x0922, 0x093C, } }, + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER FA", .sequence = &[_]u21{ 0x092B, 0x093C, } }, + .{ .name = "DEVANAGARI SEQUENCE FOR LETTER YYA", .sequence = &[_]u21{ 0x092F, 0x093C, } }, + .{ .name = "BENGALI SEQUENCE FOR LETTER RRA", .sequence = &[_]u21{ 0x09A1, 0x09BC, } }, + .{ .name = "BENGALI SEQUENCE FOR LETTER RHA", .sequence = &[_]u21{ 0x09A2, 0x09BC, } }, + .{ .name = "BENGALI SEQUENCE FOR LETTER YYA", .sequence = &[_]u21{ 0x09AF, 0x09BC, } }, + .{ .name = "GURMUKHI SEQUENCE FOR LETTER LLA", .sequence = &[_]u21{ 0x0A32, 0x0A3C, } }, + .{ .name = "GURMUKHI SEQUENCE FOR LETTER SHA", .sequence = &[_]u21{ 0x0A38, 0x0A3C, } }, + .{ .name = "GURMUKHI SEQUENCE FOR LETTER KHHA", .sequence = &[_]u21{ 0x0A16, 0x0A3C, } }, + .{ .name = "GURMUKHI SEQUENCE FOR LETTER GHHA", .sequence = &[_]u21{ 0x0A17, 0x0A3C, } }, + .{ .name = "GURMUKHI SEQUENCE FOR LETTER ZA", .sequence = &[_]u21{ 0x0A1C, 0x0A3C, } }, + .{ .name = "GURMUKHI SEQUENCE FOR LETTER FA", .sequence = &[_]u21{ 0x0A2B, 0x0A3C, } }, + .{ .name = "ORIYA SEQUENCE FOR LETTER RRA", .sequence = &[_]u21{ 0x0B21, 0x0B3C, } }, + .{ .name = "ORIYA SEQUENCE FOR LETTER RHA", .sequence = &[_]u21{ 0x0B22, 0x0B3C, } }, +}; -- 2.54.0