| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-03-25 20:58:40 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-03-26 01:11:55 UTC |
| parent | 8147250f2c6b05301b2f3d5fcd165261fcf13544 |
| borogove/EmojiUtil.hx | +8 | -0 |
| test/TestAll.hx | +1 | -0 |
| test/TestEmojiUtil.hx | +42 | -0 |
diff --git a/borogove/EmojiUtil.hx b/borogove/EmojiUtil.hx index 451f376..e1afbbd 100644 --- a/borogove/EmojiUtil.hx +++ b/borogove/EmojiUtil.hx @@ -46,10 +46,18 @@ class EmojiUtil { public static final TAGS = new UnicodeRange(0xE0020, 0xE007F); public static final CYK_SYMBOLS_AND_PUNCTUATION = new UnicodeList(0x3030, 0x303D); public static final LETTERLIKE_SYMBOLS = new UnicodeList(0x2122, 0x2139); + public static final GENERAL_PUNCTUATION = new UnicodeList(0x203C, 0x2049); + public static final ARROWS = new UnicodeRange(0x2190, 0x21FF); + public static final ENCLOSED_ALPHANUMERICS = new UnicodeRange(0x2460, 0x24FF); + public static final MISC_SYMBOLS_AND_ARROWS = new UnicodeRange(0x2B00, 0x2BFF); public static final KEYCAP_COMBINEABLE = new UnicodeBlocks(new UnicodeList(0x23), new UnicodeList(0x2A), new UnicodeRange(0x30, 0x39)); public static final SYMBOLIZE = new UnicodeBlocks( + GENERAL_PUNCTUATION, + ARROWS, + ENCLOSED_ALPHANUMERICS, + MISC_SYMBOLS_AND_ARROWS, GEOMETRIC_SHAPES, LATIN_SUPPLEMENT, CYK_SYMBOLS_AND_PUNCTUATION, diff --git a/test/TestAll.hx b/test/TestAll.hx index 5a8fe65..83f46de 100644 --- a/test/TestAll.hx +++ b/test/TestAll.hx @@ -12,6 +12,7 @@ class TestAll { new TestCaps(), new TestClient(), new TestXEP0393(), + new TestEmojiUtil(), ]); } } diff --git a/test/TestEmojiUtil.hx b/test/TestEmojiUtil.hx new file mode 100644 index 0000000..2fd316a --- /dev/null +++ b/test/TestEmojiUtil.hx @@ -0,0 +1,42 @@ +package test; + +import utest.Assert; +import borogove.EmojiUtil; + +class TestEmojiUtil extends utest.Test { + public function testDoubleExclamationMark() { + Assert.isFalse(EmojiUtil.isEmoji("‼")); + Assert.isTrue(EmojiUtil.isEmoji("‼️")); + } + + public function testInterrobang() { + Assert.isFalse(EmojiUtil.isEmoji("⁉")); + Assert.isTrue(EmojiUtil.isEmoji("⁉️")); + } + + public function testArrows() { + Assert.isFalse(EmojiUtil.isEmoji("↔")); + Assert.isTrue(EmojiUtil.isEmoji("↔️")); + } + + public function testCopyright() { + Assert.isFalse(EmojiUtil.isEmoji("©")); + Assert.isTrue(EmojiUtil.isEmoji("©️")); + } + + public function testStar() { + Assert.isFalse(EmojiUtil.isEmoji("⭐")); + Assert.isTrue(EmojiUtil.isEmoji("⭐️")); + } + + public function testRegularEmoji() { + Assert.isTrue(EmojiUtil.isEmoji("😀")); + Assert.isTrue(EmojiUtil.isEmoji("🚀")); + } + + public function testIsOnlyEmoji() { + Assert.isTrue(EmojiUtil.isOnlyEmoji("‼️😀🚀")); + Assert.isFalse(EmojiUtil.isOnlyEmoji("‼️ a")); + Assert.isFalse(EmojiUtil.isOnlyEmoji("‼")); + } +}