diff --git a/magnetar_mmm_parser/src/lib.rs b/magnetar_mmm_parser/src/lib.rs
index 6f1bf94..7385d65 100644
--- a/magnetar_mmm_parser/src/lib.rs
+++ b/magnetar_mmm_parser/src/lib.rs
@@ -1207,90 +1207,91 @@ mod test {
#[test]
fn parse_formatting() {
assert_eq!(
+ parse_full(r#"~~stikethrough~~"#),
Token::Strikethrough(Box::new(Token::PlainText("stikethrough".into()))),
- parse_full(r#"~~stikethrough~~"#)
);
assert_eq!(
+ parse_full(r#"**bold**"#),
Token::Bold(Box::new(Token::PlainText("bold".into()))),
- parse_full(r#"**bold**"#)
);
assert_eq!(
+ parse_full(r#"*italic*"#),
Token::Italic(Box::new(Token::PlainText("italic".into()))),
- parse_full(r#"*italic*"#)
);
assert_eq!(
+ parse_full(r#"not code `code` also not code"#),
Token::Sequence(vec![
Token::PlainText("not code ".into()),
Token::InlineCode("code".into()),
Token::PlainText(" also not code".into())
]),
- parse_full(r#"not code `code` also not code"#)
);
assert_eq!(
+ parse_full(r#"not code `code` also `not code"#),
Token::Sequence(vec![
Token::PlainText("not code ".into()),
Token::InlineCode("code".into()),
Token::PlainText(" also `not code".into())
]),
- parse_full(r#"not code `code` also `not code"#)
);
assert_eq!(
+ parse_full(r#"not code `*not bold*` also not code"#),
Token::Sequence(vec![
Token::PlainText("not code ".into()),
Token::InlineCode("*not bold*".into()),
Token::PlainText(" also not code".into())
]),
- parse_full(r#"not code `*not bold*` also not code"#)
);
assert_eq!(
- Token::BoldItalic(Box::new(Token::PlainText("bold italic".into()))),
- parse_full(r#"***bold italic***"#)
+ parse_full(r#"***bold italic***"#),
+ Token::BoldItalic(Box::new(Token::PlainText("bold italic".into())))
);
assert_eq!(
+ parse_full(r#"bold italic"#),
Token::Bold(Box::new(Token::Italic(Box::new(Token::PlainText(
"bold italic".into()
- ))))),
- parse_full(r#"bold italic"#)
+ )))))
);
}
#[test]
fn parse_complex() {
assert_eq!(
+ parse_full(
+ r#"
centered
+π¦π³οΈββ§οΈ
+text"#
+ ),
Token::Center(Box::new(Token::Sequence(vec![
Token::PlainText("centered\n".into()),
Token::UnicodeEmoji("π¦".into()),
Token::UnicodeEmoji("π³οΈββ§οΈ".into()),
Token::PlainText("\ntext".into())
- ]))),
- parse_full(
- r#"centered
-π¦π³οΈββ§οΈ
-text"#
- )
+ ])))
);
assert_eq!(
+ parse_full(
+ r#"> centered
+> π©π½βπ€βπ©πΌ
+> text"#
+ ),
Token::Quote(Box::new(Token::Center(Box::new(Token::Sequence(vec![
Token::PlainText("centered\n".into()),
Token::UnicodeEmoji("π©π½βπ€βπ©πΌ".into()),
Token::PlainText("\ntext".into())
]))))),
- parse_full(
- r#"> centered
-> π©π½βπ€βπ©πΌ
-> text"#
- )
);
assert_eq!(
+ parse_full(r#"$[x2 $[sparkle π₯Ί]π$[spin.y,speed=5s β€οΈ]π¦]"#),
Token::Function {
name: "x2".into(),
params: HashMap::new(),
@@ -1314,10 +1315,10 @@ text"#
Token::UnicodeEmoji("π¦".into()),
]))
},
- parse_full(r#"$[x2 $[sparkle π₯Ί]π$[spin.y,speed=5s β€οΈ]π¦]"#)
);
assert_eq!(
+ parse_full(r#"bold @tag1 @tag2 italic"#),
Token::Sequence(vec![
Token::PlainText("bold ".into()),
Token::Mention {
@@ -1333,19 +1334,9 @@ text"#
},
Token::PlainText(" italic".into())
]),
- Context
- .full(Span::new(r#"bold @tag1 @tag2 italic"#))
- .unwrap()
- .1
- .merged()
);
assert_eq!(
- Token::Quote(Box::new(Token::Sequence(vec![
- Token::PlainText("test\n".into()),
- Token::Italic(Box::new(Token::PlainText("\nitalic\n".into()))),
- Token::Quote(Box::new(Token::PlainText("Nested quote".into())))
- ]))),
parse_full(
r#"
> test
@@ -1354,7 +1345,12 @@ text"#
>
>> Nested quote
"#
- )
+ ),
+ Token::Quote(Box::new(Token::Sequence(vec![
+ Token::PlainText("test\n".into()),
+ Token::Italic(Box::new(Token::PlainText("\nitalic\n".into()))),
+ Token::Quote(Box::new(Token::PlainText("Nested quote".into())))
+ ]))),
);
}
@@ -1539,46 +1535,46 @@ text"#
#[test]
fn parse_emoji() {
assert_eq!(
+ parse_full("π₯Ίπβ€οΈπ¦"),
Token::Sequence(
vec!["π₯Ί", "π", "β€οΈ", "π¦"]
.into_iter()
.map(<&str as Into>>::into)
.map(Token::UnicodeEmoji)
.collect::>()
- ),
- parse_full("π₯Ίπβ€οΈπ¦")
+ )
);
// Trans flag, ZWJ
assert_eq!(
- Token::UnicodeEmoji("\u{1f3f3}\u{0fe0f}\u{0200d}\u{026a7}\u{0fe0f}".into()),
- parse_full("\u{1f3f3}\u{0fe0f}\u{0200d}\u{026a7}\u{0fe0f}")
+ parse_full("\u{1f3f3}\u{0fe0f}\u{0200d}\u{026a7}\u{0fe0f}"),
+ Token::UnicodeEmoji("\u{1f3f3}\u{0fe0f}\u{0200d}\u{026a7}\u{0fe0f}".into())
);
assert_eq!(
+ parse_full("\u{0200d}\u{1f3f3}\u{0fe0f}"),
Token::Sequence(vec![
Token::PlainText("\u{0200d}".into()), // ZWJ
Token::UnicodeEmoji("\u{1f3f3}\u{0fe0f}".into()), // White flag
- ]),
- parse_full("\u{0200d}\u{1f3f3}\u{0fe0f}")
+ ])
);
// Trans flag, ZWNJ
assert_eq!(
+ parse_full("\u{1f3f3}\u{0fe0f}\u{0200c}\u{026a7}\u{0fe0f}"),
Token::Sequence(vec![
Token::UnicodeEmoji("\u{1f3f3}\u{0fe0f}".into()), // White flag
Token::PlainText("\u{0200c}".into()), // ZWNJ
Token::UnicodeEmoji("\u{026a7}\u{0fe0f}".into()) // Trans symbol
- ]),
- parse_full("\u{1f3f3}\u{0fe0f}\u{0200c}\u{026a7}\u{0fe0f}")
+ ])
);
assert_eq!(
+ parse_full("\u{1f3f3}\u{0fe0f}\u{0200d}\u{0200d}\u{0200d}"),
Token::Sequence(vec![
Token::UnicodeEmoji("\u{1f3f3}\u{0fe0f}".into()), // White flag
Token::PlainText("\u{0200d}\u{0200d}\u{0200d}".into()), // ZWJ
- ]),
- parse_full("\u{1f3f3}\u{0fe0f}\u{0200d}\u{0200d}\u{0200d}")
+ ])
);
}
}