Skip to content

Commit f22dafb

Browse files
content: Fix emoji class regexp
An emoji with multiple codepoints is encoded as `emoji-xxxxxx-xxxxxx-..` (where xxxxxx corresponds to a hex sequence). Current regexp matches strings with either zero or single occurence of subgroup, changing it to match string with either zero or infinitely repeating subgroup.
1 parent f2a3ec6 commit f22dafb

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

lib/model/content.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ class _ZulipContentParser {
523523
return result;
524524
}
525525

526-
static final _emojiClassRegexp = RegExp(r"^emoji(-[0-9a-f]+)?$");
526+
static final _emojiClassRegexp = RegExp(r"^emoji(-[0-9a-f]+)*$");
527527

528528
InlineContentNode parseInlineContent(dom.Node node) {
529529
assert(_debugParserContext == _ParserContext.inline);

test/model/content_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ void main() {
146146
'<p><span aria-label="thumbs up" class="emoji emoji-1f44d" role="img" title="thumbs up">:thumbs_up:</span></p>',
147147
const UnicodeEmojiNode(text: ':thumbs_up:'));
148148

149+
testParseInline('parse Unicode emoji, multiple codepoints',
150+
// ":transgender_flag:"
151+
'<p><span aria-label="transgender flag" class="emoji emoji-1f3f3-fe0f-200d-26a7-fe0f" role="img" title="transgender flag">:transgender_flag:</span></p>',
152+
const UnicodeEmojiNode(text: ':transgender_flag:'));
153+
149154
testParseInline('parse custom emoji',
150155
// ":flutter:"
151156
'<p><img alt=":flutter:" class="emoji" src="/user_avatars/2/emoji/images/204.png" title="flutter"></p>',

0 commit comments

Comments
 (0)