diff --git a/generate.zig b/generate.zig index c766fb39d0f9d1fd1bd2fb0f21f49f4c2c13f6ef..0ec71b5e3abd4bbaaf628fa58741af84310aed31 100644 --- a/generate.zig +++ b/generate.zig @@ -21,6 +21,7 @@ const files = [_]type{ @import("./scripts/NameAliases.zig"), @import("./scripts/NamedSequences.zig"), @import("./scripts/NamedSequencesProv.zig"), + @import("./scripts/PropertyAliases.zig"), @import("./scripts/PropList.zig"), @import("./scripts/ScriptExtensions.zig"), @import("./scripts/Scripts.zig"), diff --git a/scripts/PropertyAliases.zig b/scripts/PropertyAliases.zig new file mode 100644 index 0000000000000000000000000000000000000000..0c48c59049f761388bdcd5d6eb6cc28281ff2c90 --- /dev/null +++ b/scripts/PropertyAliases.zig @@ -0,0 +1,35 @@ +const std = @import("std"); +const common = @import("./_common.zig"); + +pub usingnamespace common.Main(struct { + pub const source_file = "PropertyAliases"; + + pub const dest_file = "src/property_aliases.zig"; + + pub const dest_header = + \\const std = @import("std"); + \\ + \\pub const data = blk: { + \\ @setEvalBranchQuota(4000); + \\ const map = std.ComptimeStringMap([]const u8, .{ + \\ + ; + + pub const dest_footer = + \\ }); + \\ break :blk map; + \\}; + ; + + pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !bool { + _ = alloc; + var it = std.mem.tokenize(u8, line, "; "); + + try writer.print(" .{{ \"{}\", \"{}\" }},\n", .{ + std.zig.fmtEscapes(it.next().?), + std.zig.fmtEscapes(it.next().?), + }); + + return true; + } +}); diff --git a/src/lib.zig b/src/lib.zig index c83407dd5e68ff30660e42b3161bd6131de8a983..aaa68f1bfdfe4404d94dc9df502a82adaaba2fcd 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -21,7 +21,7 @@ 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"); pub const prop_list = @import("./prop_list.zig"); -// PropertyAliases.txt +pub const property_aliases = @import("./property_aliases.zig"); // PropertyValueAliases.txt pub const script_extensions = @import("./script_extensions.zig"); pub const scripts = @import("./scripts.zig"); diff --git a/src/main.zig b/src/main.zig index 733e92579f4c9520b4b25ebb1a0989f35c15f547..b9ce67ba1b4ca84707dcda85ab43493e6e4ad93f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -31,6 +31,7 @@ pub fn main() !void { ucd.vertical_orientation, ucd.emoji, ucd.script_extensions, + ucd.property_aliases, }; inline for (data) |b| { diff --git a/src/property_aliases.zig b/src/property_aliases.zig new file mode 100644 index 0000000000000000000000000000000000000000..270941dff6d9cfbc8cb055a059523d30c6dba969 --- /dev/null +++ b/src/property_aliases.zig @@ -0,0 +1,144 @@ +// 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/PropertyAliases.txt +// +// zig fmt: off + +const std = @import("std"); + +pub const data = blk: { + @setEvalBranchQuota(4000); + const map = std.ComptimeStringMap([]const u8, .{ + .{ "cjkAccountingNumeric", "kAccountingNumeric" }, + .{ "cjkOtherNumeric", "kOtherNumeric" }, + .{ "cjkPrimaryNumeric", "kPrimaryNumeric" }, + .{ "nv", "Numeric_Value" }, + .{ "cf", "Case_Folding" }, + .{ "cjkCompatibilityVariant", "kCompatibilityVariant" }, + .{ "dm", "Decomposition_Mapping" }, + .{ "FC_NFKC", "FC_NFKC_Closure" }, + .{ "lc", "Lowercase_Mapping" }, + .{ "NFKC_CF", "NFKC_Casefold" }, + .{ "scf", "Simple_Case_Folding" }, + .{ "slc", "Simple_Lowercase_Mapping" }, + .{ "stc", "Simple_Titlecase_Mapping" }, + .{ "suc", "Simple_Uppercase_Mapping" }, + .{ "tc", "Titlecase_Mapping" }, + .{ "uc", "Uppercase_Mapping" }, + .{ "bmg", "Bidi_Mirroring_Glyph" }, + .{ "bpb", "Bidi_Paired_Bracket" }, + .{ "cjkIICore", "kIICore" }, + .{ "cjkIRG_GSource", "kIRG_GSource" }, + .{ "cjkIRG_HSource", "kIRG_HSource" }, + .{ "cjkIRG_JSource", "kIRG_JSource" }, + .{ "cjkIRG_KPSource", "kIRG_KPSource" }, + .{ "cjkIRG_KSource", "kIRG_KSource" }, + .{ "cjkIRG_MSource", "kIRG_MSource" }, + .{ "cjkIRG_SSource", "kIRG_SSource" }, + .{ "cjkIRG_TSource", "kIRG_TSource" }, + .{ "cjkIRG_UKSource", "kIRG_UKSource" }, + .{ "cjkIRG_USource", "kIRG_USource" }, + .{ "cjkIRG_VSource", "kIRG_VSource" }, + .{ "cjkRSUnicode", "kRSUnicode" }, + .{ "EqUIdeo", "Equivalent_Unified_Ideograph" }, + .{ "isc", "ISO_Comment" }, + .{ "JSN", "Jamo_Short_Name" }, + .{ "na", "Name" }, + .{ "na1", "Unicode_1_Name" }, + .{ "Name_Alias", "Name_Alias" }, + .{ "scx", "Script_Extensions" }, + .{ "age", "Age" }, + .{ "blk", "Block" }, + .{ "sc", "Script" }, + .{ "bc", "Bidi_Class" }, + .{ "bpt", "Bidi_Paired_Bracket_Type" }, + .{ "ccc", "Canonical_Combining_Class" }, + .{ "dt", "Decomposition_Type" }, + .{ "ea", "East_Asian_Width" }, + .{ "gc", "General_Category" }, + .{ "GCB", "Grapheme_Cluster_Break" }, + .{ "hst", "Hangul_Syllable_Type" }, + .{ "InPC", "Indic_Positional_Category" }, + .{ "InSC", "Indic_Syllabic_Category" }, + .{ "jg", "Joining_Group" }, + .{ "jt", "Joining_Type" }, + .{ "lb", "Line_Break" }, + .{ "NFC_QC", "NFC_Quick_Check" }, + .{ "NFD_QC", "NFD_Quick_Check" }, + .{ "NFKC_QC", "NFKC_Quick_Check" }, + .{ "NFKD_QC", "NFKD_Quick_Check" }, + .{ "nt", "Numeric_Type" }, + .{ "SB", "Sentence_Break" }, + .{ "vo", "Vertical_Orientation" }, + .{ "WB", "Word_Break" }, + .{ "AHex", "ASCII_Hex_Digit" }, + .{ "Alpha", "Alphabetic" }, + .{ "Bidi_C", "Bidi_Control" }, + .{ "Bidi_M", "Bidi_Mirrored" }, + .{ "Cased", "Cased" }, + .{ "CE", "Composition_Exclusion" }, + .{ "CI", "Case_Ignorable" }, + .{ "Comp_Ex", "Full_Composition_Exclusion" }, + .{ "CWCF", "Changes_When_Casefolded" }, + .{ "CWCM", "Changes_When_Casemapped" }, + .{ "CWKCF", "Changes_When_NFKC_Casefolded" }, + .{ "CWL", "Changes_When_Lowercased" }, + .{ "CWT", "Changes_When_Titlecased" }, + .{ "CWU", "Changes_When_Uppercased" }, + .{ "Dash", "Dash" }, + .{ "Dep", "Deprecated" }, + .{ "DI", "Default_Ignorable_Code_Point" }, + .{ "Dia", "Diacritic" }, + .{ "EBase", "Emoji_Modifier_Base" }, + .{ "EComp", "Emoji_Component" }, + .{ "EMod", "Emoji_Modifier" }, + .{ "Emoji", "Emoji" }, + .{ "EPres", "Emoji_Presentation" }, + .{ "Ext", "Extender" }, + .{ "ExtPict", "Extended_Pictographic" }, + .{ "Gr_Base", "Grapheme_Base" }, + .{ "Gr_Ext", "Grapheme_Extend" }, + .{ "Gr_Link", "Grapheme_Link" }, + .{ "Hex", "Hex_Digit" }, + .{ "Hyphen", "Hyphen" }, + .{ "IDC", "ID_Continue" }, + .{ "Ideo", "Ideographic" }, + .{ "IDS", "ID_Start" }, + .{ "IDSB", "IDS_Binary_Operator" }, + .{ "IDST", "IDS_Trinary_Operator" }, + .{ "Join_C", "Join_Control" }, + .{ "LOE", "Logical_Order_Exception" }, + .{ "Lower", "Lowercase" }, + .{ "Math", "Math" }, + .{ "NChar", "Noncharacter_Code_Point" }, + .{ "OAlpha", "Other_Alphabetic" }, + .{ "ODI", "Other_Default_Ignorable_Code_Point" }, + .{ "OGr_Ext", "Other_Grapheme_Extend" }, + .{ "OIDC", "Other_ID_Continue" }, + .{ "OIDS", "Other_ID_Start" }, + .{ "OLower", "Other_Lowercase" }, + .{ "OMath", "Other_Math" }, + .{ "OUpper", "Other_Uppercase" }, + .{ "Pat_Syn", "Pattern_Syntax" }, + .{ "Pat_WS", "Pattern_White_Space" }, + .{ "PCM", "Prepended_Concatenation_Mark" }, + .{ "QMark", "Quotation_Mark" }, + .{ "Radical", "Radical" }, + .{ "RI", "Regional_Indicator" }, + .{ "SD", "Soft_Dotted" }, + .{ "STerm", "Sentence_Terminal" }, + .{ "Term", "Terminal_Punctuation" }, + .{ "UIdeo", "Unified_Ideograph" }, + .{ "Upper", "Uppercase" }, + .{ "VS", "Variation_Selector" }, + .{ "WSpace", "White_Space" }, + .{ "XIDC", "XID_Continue" }, + .{ "XIDS", "XID_Start" }, + .{ "XO_NFC", "Expands_On_NFC" }, + .{ "XO_NFD", "Expands_On_NFD" }, + .{ "XO_NFKC", "Expands_On_NFKC" }, + .{ "XO_NFKD", "Expands_On_NFKD" }, + }); + break :blk map; +}; \ No newline at end of file