diff --git a/mdast_util_to_markdown/src/state.rs b/mdast_util_to_markdown/src/state.rs index 56648ac7..91dc4ed9 100644 --- a/mdast_util_to_markdown/src/state.rs +++ b/mdast_util_to_markdown/src/state.rs @@ -510,7 +510,7 @@ impl<'a> State<'a> { } start = *position; - let char_at_pos = value.chars().nth(*position); + let char_at_pos = value[*position..].chars().next(); match char_at_pos { Some('!'..='/') | Some(':'..='@') | Some('['..='`') | Some('{'..='~') => { if let Some(encode) = &config.encode { diff --git a/mdast_util_to_markdown/tests/paragraph.rs b/mdast_util_to_markdown/tests/paragraph.rs index b8801037..7c235b87 100644 --- a/mdast_util_to_markdown/tests/paragraph.rs +++ b/mdast_util_to_markdown/tests/paragraph.rs @@ -114,7 +114,20 @@ fn paragraph() { position: None })) .unwrap(), - "яяя\n", + "я\\_я\n", "should support escaping around non-ascii" ); + + assert_eq!( + to(&Node::Paragraph(Paragraph { + children: vec![Node::Text(Text { + value: String::from("테스트 [테스트] → [테스트]"), + position: None + })], + position: None + })) + .unwrap(), + "테스트 \\[테스트] → \\[테스트]\n", + "should support escaping of a shortcut reference in non-ascii text" + ); }