Skip to content

Commit 1bb3526

Browse files
authored
fix(message-parser): Emoji skin tone detection (#764)
1 parent 49c082c commit 1bb3526

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

packages/message-parser/src/grammar.pegjs

+9-1
Original file line numberDiff line numberDiff line change
@@ -633,8 +633,13 @@ unicodeEmoji
633633
)?
634634
)
635635
/ $(
636-
(unicodeEmojiMiscellaneousSymbolsAndPictographs [\u200D])*
636+
(
637+
unicodeEmojiMiscellaneousSymbolsAndPictographs
638+
unicodeEmojiMiscellaneousSymbolsAndPictographsFitzpatrickModifiers?
639+
[\u200D]
640+
)*
637641
unicodeEmojiMiscellaneousSymbolsAndPictographs
642+
unicodeEmojiMiscellaneousSymbolsAndPictographsFitzpatrickModifiers?
638643
)
639644
/ unicodeEmojiTransportAndMapSymbols
640645
/ unicodeEmojiMiscellaneousTechnical
@@ -650,6 +655,9 @@ unicodeEmojiMiscellaneousSymbolsAndPictographs
650655
= $([\uD83C] [\uDF00-\uDFFF] [\uFE00-\uFE0F]?)
651656
/ $([\uD83D] [\uDC00-\uDDFF] [\uFE00-\uFE0F]?)
652657

658+
unicodeEmojiMiscellaneousSymbolsAndPictographsFitzpatrickModifiers
659+
= $([\uD83C] [\uDFFB-\uDFFF])
660+
653661
unicodeEmojiTransportAndMapSymbols = $([\uD83D] [\uDE80-\uDEFA])
654662

655663
unicodeEmojiMiscellaneousTechnical = $([\u2300-\u23FF] [\uFE00-\uFE0F]?)

packages/message-parser/tests/emoji.test.ts

+18
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,24 @@ test.each([
6161
['❤️', [bigEmoji([emojiUnicode('❤️')])]],
6262
['🏳️', [bigEmoji([emojiUnicode('🏳️')])]],
6363
['🧑🏾‍💻', [bigEmoji([emojiUnicode('🧑🏾‍💻')])]],
64+
['🧑🏾‍💻🧑🏾‍💻', [bigEmoji([emojiUnicode('🧑🏾‍💻'), emojiUnicode('🧑🏾‍💻')])]],
65+
[
66+
'🧑🏾‍💻🧑🏾‍💻🧑🏾‍💻',
67+
[
68+
bigEmoji([
69+
emojiUnicode('🧑🏾‍💻'),
70+
emojiUnicode('🧑🏾‍💻'),
71+
emojiUnicode('🧑🏾‍💻'),
72+
]),
73+
],
74+
],
75+
['👆🏽', [bigEmoji([emojiUnicode('👆🏽')])]],
76+
['👆🏽👆🏽', [bigEmoji([emojiUnicode('👆🏽'), emojiUnicode('👆🏽')])]],
77+
[
78+
'👆🏽👆🏽👆🏽',
79+
[bigEmoji([emojiUnicode('👆🏽'), emojiUnicode('👆🏽'), emojiUnicode('👆🏽')])],
80+
],
81+
['👆🏺', [bigEmoji([emojiUnicode('👆'), emojiUnicode('🏺')])]],
6482
])('parses %p', (input, output) => {
6583
expect(parser(input)).toMatchObject(output);
6684
});

0 commit comments

Comments
 (0)