Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d81d057

Browse files
committedNov 16, 2019
Update pulldown-cmark version
1 parent 9b0214d commit d81d057

File tree

4 files changed

+37
-60
lines changed

4 files changed

+37
-60
lines changed
 

‎Cargo.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3902,7 +3902,7 @@ name = "rustdoc"
39023902
version = "0.0.0"
39033903
dependencies = [
39043904
"minifier",
3905-
"pulldown-cmark 0.5.3",
3905+
"pulldown-cmark 0.6.1",
39063906
"rustc-rayon 0.3.0",
39073907
"tempfile",
39083908
]

‎src/librustdoc/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ name = "rustdoc"
99
path = "lib.rs"
1010

1111
[dependencies]
12-
pulldown-cmark = { version = "0.5.3", default-features = false }
12+
pulldown-cmark = { version = "0.6.1", default-features = false }
1313
minifier = "0.0.33"
1414
rayon = { version = "0.3.0", package = "rustc-rayon" }
1515
tempfile = "3"

‎src/librustdoc/html/markdown.rs

Lines changed: 35 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -368,11 +368,11 @@ impl<'a, 'b, 'ids, I: Iterator<Item = Event<'a>>> Iterator for HeadingLinks<'a,
368368
}
369369

370370
let event = self.inner.next();
371-
if let Some(Event::Start(Tag::Header(level))) = event {
371+
if let Some(Event::Start(Tag::Heading(level))) = event {
372372
let mut id = String::new();
373373
for event in &mut self.inner {
374374
match &event {
375-
Event::End(Tag::Header(..)) => break,
375+
Event::End(Tag::Heading(..)) => break,
376376
Event::Text(text) | Event::Code(text) => {
377377
id.extend(text.chars().filter_map(slugify));
378378
}
@@ -386,16 +386,16 @@ impl<'a, 'b, 'ids, I: Iterator<Item = Event<'a>>> Iterator for HeadingLinks<'a,
386386
let mut html_header = String::new();
387387
html::push_html(&mut html_header, self.buf.iter().cloned());
388388
let sec = builder.push(level as u32, html_header, id.clone());
389-
self.buf.push_front(Event::InlineHtml(format!("{} ", sec).into()));
389+
self.buf.push_front(Event::Html(format!("{} ", sec).into()));
390390
}
391391

392-
self.buf.push_back(Event::InlineHtml(format!("</a></h{}>", level).into()));
392+
self.buf.push_back(Event::Html(format!("</a></h{}>", level).into()));
393393

394394
let start_tags = format!("<h{level} id=\"{id}\" class=\"section-header\">\
395395
<a href=\"#{id}\">",
396396
id = id,
397397
level = level);
398-
return Some(Event::InlineHtml(start_tags.into()));
398+
return Some(Event::Html(start_tags.into()));
399399
}
400400
event
401401
}
@@ -553,15 +553,13 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for Footnotes<'a, I> {
553553

554554
pub fn find_testable_code<T: test::Tester>(doc: &str, tests: &mut T, error_codes: ErrorCodes,
555555
enable_per_target_ignores: bool) {
556-
let mut parser = Parser::new(doc);
557-
let mut prev_offset = 0;
556+
let mut parser = Parser::new(doc).into_offset_iter();
558557
let mut nb_lines = 0;
559558
let mut register_header = None;
560-
while let Some(event) = parser.next() {
559+
let mut prev_offset = 0;
560+
while let Some((event, offset)) = parser.next() {
561561
match event {
562562
Event::Start(Tag::CodeBlock(s)) => {
563-
let offset = parser.get_offset();
564-
565563
let block_info = if s.is_empty() {
566564
LangString::all_false()
567565
} else {
@@ -571,8 +569,7 @@ pub fn find_testable_code<T: test::Tester>(doc: &str, tests: &mut T, error_codes
571569
continue;
572570
}
573571
let mut test_s = String::new();
574-
575-
while let Some(Event::Text(s)) = parser.next() {
572+
while let Some((Event::Text(s), _)) = parser.next() {
576573
test_s.push_str(&s);
577574
}
578575

@@ -581,12 +578,12 @@ pub fn find_testable_code<T: test::Tester>(doc: &str, tests: &mut T, error_codes
581578
.map(|l| map_line(l).for_code())
582579
.collect::<Vec<Cow<'_, str>>>()
583580
.join("\n");
584-
nb_lines += doc[prev_offset..offset].lines().count();
581+
nb_lines += doc[prev_offset..offset.end].lines().count();
585582
let line = tests.get_line() + nb_lines;
586583
tests.add_test(text, block_info, line);
587-
prev_offset = offset;
584+
prev_offset = offset.start;
588585
}
589-
Event::Start(Tag::Header(level)) => {
586+
Event::Start(Tag::Heading(level)) => {
590587
register_header = Some(level as u32);
591588
}
592589
Event::Text(ref s) if register_header.is_some() => {
@@ -766,7 +763,7 @@ impl MarkdownHtml<'_> {
766763

767764
// Treat inline HTML as plain text.
768765
let p = p.map(|event| match event {
769-
Event::Html(text) | Event::InlineHtml(text) => Event::Text(text),
766+
Event::Html(text) => Event::Text(text),
770767
_ => event
771768
});
772769

@@ -823,10 +820,10 @@ pub fn plain_summary_line(md: &str) -> String {
823820
let next_event = next_event.unwrap();
824821
let (ret, is_in) = match next_event {
825822
Event::Start(Tag::Paragraph) => (None, 1),
826-
Event::Start(Tag::Header(_)) => (None, 1),
823+
Event::Start(Tag::Heading(_)) => (None, 1),
827824
Event::Code(code) => (Some(format!("`{}`", code)), 0),
828825
Event::Text(ref s) if self.is_in > 0 => (Some(s.as_ref().to_owned()), 0),
829-
Event::End(Tag::Paragraph) | Event::End(Tag::Header(_)) => (None, -1),
826+
Event::End(Tag::Paragraph) | Event::End(Tag::Heading(_)) => (None, -1),
830827
_ => (None, 0),
831828
};
832829
if is_in > 0 || (is_in < 0 && self.is_in > 0) {
@@ -925,16 +922,14 @@ crate fn rust_code_blocks(md: &str) -> Vec<RustCodeBlock> {
925922
return code_blocks;
926923
}
927924

928-
let mut p = Parser::new_ext(md, opts());
925+
let mut p = Parser::new_ext(md, opts()).into_offset_iter();
929926

930-
let mut code_block_start = 0;
927+
let mut code_block = None;
931928
let mut code_start = 0;
932929
let mut is_fenced = false;
933-
let mut previous_offset = 0;
930+
let mut previous_offset = Range { start: 0, end: 0 };
934931
let mut in_rust_code_block = false;
935-
while let Some(event) = p.next() {
936-
let offset = p.get_offset();
937-
932+
while let Some((event, offset_range)) = p.next() {
938933
match event {
939934
Event::Start(Tag::CodeBlock(syntax)) => {
940935
let lang_string = if syntax.is_empty() {
@@ -945,55 +940,40 @@ crate fn rust_code_blocks(md: &str) -> Vec<RustCodeBlock> {
945940

946941
if lang_string.rust {
947942
in_rust_code_block = true;
943+
code_block = Some(offset_range.clone());
948944

949-
code_start = offset;
950-
code_block_start = match md[previous_offset..offset].find("```") {
951-
Some(fence_idx) => {
945+
code_start = match md[offset_range.clone()].find("```") {
946+
Some(_) => {
952947
is_fenced = true;
953-
previous_offset + fence_idx
948+
offset_range.start + md[offset_range.clone()]
949+
.lines()
950+
.next()
951+
.map_or(0, |x| x.len() + 1)
954952
}
955953
None => {
956954
is_fenced = false;
957-
offset
955+
offset_range.start
958956
}
959957
};
958+
previous_offset = Range { start: code_start, end: offset_range.end };
960959
}
961960
}
962961
Event::End(Tag::CodeBlock(syntax)) if in_rust_code_block => {
963962
in_rust_code_block = false;
964963

965-
let code_block_end = if is_fenced {
966-
let fence_str = &md[previous_offset..offset]
967-
.chars()
968-
.rev()
969-
.collect::<String>();
970-
fence_str
971-
.find("```")
972-
.map(|fence_idx| offset - fence_idx)
973-
.unwrap_or_else(|| offset)
974-
} else if md
975-
.as_bytes()
976-
.get(offset)
977-
.map(|b| *b == b'\n')
978-
.unwrap_or_default()
979-
{
980-
offset - 1
981-
} else {
982-
offset
983-
};
984-
985964
let code_end = if is_fenced {
986-
previous_offset
965+
let last_len = md[previous_offset.clone()]
966+
.lines()
967+
.last()
968+
.map_or(0, |l| l.len());
969+
previous_offset.end - last_len
987970
} else {
988-
code_block_end
971+
previous_offset.end
989972
};
990973

991974
code_blocks.push(RustCodeBlock {
992975
is_fenced,
993-
range: Range {
994-
start: code_block_start,
995-
end: code_block_end,
996-
},
976+
range: code_block.clone().unwrap(),
997977
code: Range {
998978
start: code_start,
999979
end: code_end,
@@ -1007,8 +987,6 @@ crate fn rust_code_blocks(md: &str) -> Vec<RustCodeBlock> {
1007987
}
1008988
_ => (),
1009989
}
1010-
1011-
previous_offset = offset;
1012990
}
1013991

1014992
code_blocks

‎src/librustdoc/passes/check_code_block_syntax.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ impl<'a, 'tcx> SyntaxChecker<'a, 'tcx> {
3333
FileName::Custom(String::from("doctest")),
3434
dox[code_block.code].to_owned(),
3535
);
36-
3736
let validation_status = {
3837
let mut has_syntax_errors = false;
3938
let mut only_whitespace = true;

0 commit comments

Comments
 (0)
Please sign in to comment.