You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rust-skeptic/0001-Bump-pulldown-cmark-to...

71 lines
2.8 KiB

From eae886def89134a34bec859c5d20d8c1b3b5baa7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <zebob.m@gmail.com>
Date: Thu, 1 Aug 2019 00:18:55 +0200
Subject: [PATCH 1/2] Bump pulldown-cmark to 0.6
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Robert-André Mauchin <zebob.m@gmail.com>
---
src/lib.rs | 26 +++++++++-----------------
1 file changed, 9 insertions(+), 17 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 14ac237..557459d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -174,7 +174,7 @@ fn extract_tests(config: &Config) -> Result<DocTestSuite, IoError> {
enum Buffer {
None,
Code(Vec<String>),
- Header(String),
+ Heading(String),
}
fn extract_tests_from_file(path: &Path) -> Result<DocTest, IoError> {
@@ -205,23 +205,15 @@ fn extract_tests_from_string(s: &str, file_stem: &str) -> (Vec<Test>, Option<Str
// Oh this isn't actually a test but a legacy template
let mut old_template = None;
- // In order to call get_offset() on the parser,
- // this loop must not hold an exclusive reference to the parser.
- loop {
- let offset = parser.get_offset();
- let line_number = bytecount::count(&s.as_bytes()[0..offset], b'\n');
- let event = if let Some(event) = parser.next() {
- event
- } else {
- break;
- };
+ for (event, range) in parser.into_offset_iter() {
+ let line_number = bytecount::count(&s.as_bytes()[0..range.start], b'\n');
match event {
- Event::Start(Tag::Header(level)) if level < 3 => {
- buffer = Buffer::Header(String::new());
+ Event::Start(Tag::Heading(level)) if level < 3 => {
+ buffer = Buffer::Heading(String::new());
}
- Event::End(Tag::Header(level)) if level < 3 => {
+ Event::End(Tag::Heading(level)) if level < 3 => {
let cur_buffer = mem::replace(&mut buffer, Buffer::None);
- if let Buffer::Header(sect) = cur_buffer {
+ if let Buffer::Heading(sect) = cur_buffer {
section = Some(sanitize_test_name(&sect));
}
}
@@ -236,8 +228,8 @@ fn extract_tests_from_string(s: &str, file_stem: &str) -> (Vec<Test>, Option<Str
if buf.is_empty() {
code_block_start = line_number;
}
- buf.push(text.into_owned());
- } else if let Buffer::Header(ref mut buf) = buffer {
+ buf.extend(text.lines().map(|s| format!("{}\n", s)));
+ } else if let Buffer::Heading(ref mut buf) = buffer {
buf.push_str(&*text);
}
}
--
2.30.0.rc2