diff --git a/src/main.zig b/src/main.zig index 5263236978eb9e2d73a9fa5f31e7909422bc9806..898f907e9551a45a85d81a89e98dedd680b588f4 100644 --- a/src/main.zig +++ b/src/main.zig @@ -110,7 +110,7 @@ export fn u_hasBinaryProperty(cp: u32, prop: t.UProperty) bool { .UCHAR_VERTICAL_ORIENTATION => false, // TODO .UCHAR_GENERAL_CATEGORY_MASK => false, // TODO .UCHAR_NUMERIC_VALUE => false, // TODO - .UCHAR_AGE => false, // TODO + .UCHAR_AGE => @as(u16, @bitCast(icu.age(cp))) > 0, .UCHAR_BIDI_MIRRORING_GLYPH => false, // TODO .UCHAR_CASE_FOLDING => false, // TODO .UCHAR_LOWERCASE_MAPPING => false, // TODO diff --git a/src/root.zig b/src/root.zig index cff718f74aedf38e2900993f4bb24794763e06e2..7db54a563d3d6fcd1ae5f92f574675b951a7f6c0 100644 --- a/src/root.zig +++ b/src/root.zig @@ -36,3 +36,14 @@ pub fn hasEmojiCategory(cp: u32, comptime cat: ucd.emoji.Emoji.Category) bool { } return false; } + +/// {0,0} means not found +pub fn age(cp: u32) [2]u8 { + @setEvalBranchQuota(100_000); + inline for (ucd.derived_age.data) |item| { + if (cp >= item.from and cp <= item.to) { + return item.since; + } + } + return .{ 0, 0 }; +}