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("@!");