From c45ec852dd57d7b9299b3130f995ef3cd056abdd Mon Sep 17 00:00:00 2001 From: Natty Date: Thu, 5 Oct 2023 22:32:53 +0200 Subject: [PATCH] Shortcode emoji parsing --- magnetar_mmm_parser/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/magnetar_mmm_parser/src/lib.rs b/magnetar_mmm_parser/src/lib.rs index 6cc9cb7..4fbb9ef 100644 --- a/magnetar_mmm_parser/src/lib.rs +++ b/magnetar_mmm_parser/src/lib.rs @@ -723,7 +723,20 @@ impl Context { )) } - fn mention<'a>(&self, input: Span<'a>) -> IResult, Token<'a>> { + fn shortcode_emoji<'a>(&self, input: Span<'a>) -> IResult, Token<'a>> { + // TODO: Fail when preceded by alphanumerics + let (input, _) = tag(":")(input)?; + let (input, shortcode) = map( + recognize(many1(alt((alphanumeric1, recognize(one_of("_+-")))))), + Span::into_fragment, + )(input)?; + let (input, _) = tag(":")(input)?; + let (input, _) = not(alphanumeric1)(input)?; + + Ok((input, Token::ShortcodeEmoji(shortcode.into()))) + } + + fn tag_mention<'a>(&self, input: Span<'a>) -> IResult, Token<'a>> { // TODO: Escaping and skip when preceded by alphanumerics let tags = one_of("@!");