Skip to content

Commit c60a93f

Browse files
committed
fix fence roundtrip with embedded backtick
1 parent 8f0bdfe commit c60a93f

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

script/cibuild

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
set -evx
44

5-
if which apt-get &>/dev/null; then
5+
if command -v apt-get &>/dev/null; then
66
sudo apt-get install python3
77
fi
88

src/cm.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -397,9 +397,15 @@ impl<'a, 'o> CommonMarkFormatter<'a, 'o> {
397397
let new_len = self.prefix.len() - 4;
398398
self.prefix.truncate(new_len);
399399
} else {
400-
let numticks = max(3, longest_backtick_sequence(&ncb.literal) + 1);
400+
let fence_char =
401+
if ncb.info.contains(&b'`') {
402+
b'~'
403+
} else {
404+
b'`'
405+
};
406+
let numticks = max(3, longest_char_sequence(&ncb.literal, fence_char) + 1);
401407
for _ in 0..numticks {
402-
write!(self, "`").unwrap();
408+
write!(self, "{}", fence_char as char).unwrap();
403409
}
404410
if !ncb.info.is_empty() {
405411
write!(self, " ").unwrap();
@@ -409,7 +415,7 @@ impl<'a, 'o> CommonMarkFormatter<'a, 'o> {
409415
self.write_all(&ncb.literal).unwrap();
410416
self.cr();
411417
for _ in 0..numticks {
412-
write!(self, "`").unwrap();
418+
write!(self, "{}", fence_char as char).unwrap();
413419
}
414420
}
415421
self.blankline();
@@ -598,11 +604,11 @@ impl<'a, 'o> CommonMarkFormatter<'a, 'o> {
598604
}
599605
}
600606

601-
fn longest_backtick_sequence(literal: &[u8]) -> usize {
607+
fn longest_char_sequence(literal: &[u8], ch: u8) -> usize {
602608
let mut longest = 0;
603609
let mut current = 0;
604610
for c in literal {
605-
if *c == b'`' {
611+
if *c == ch {
606612
current += 1;
607613
} else {
608614
if current > longest {

0 commit comments

Comments
 (0)