Skip to content

Commit 9342f73

Browse files
authored
Merge pull request #1869 from Urgau/html-ignore
Ignore inline HTML and HTML blocks
2 parents 1f0165a + fdd2173 commit 9342f73

File tree

4 files changed

+68
-12
lines changed

4 files changed

+68
-12
lines changed

Cargo.lock

Lines changed: 10 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ authors = ["Mark Rousskov <[email protected]>"]
55
edition = "2021"
66

77
[dependencies]
8-
pulldown-cmark = "0.7.0"
8+
pulldown-cmark = "0.12.0"
99
log = "0.4"
1010
regex = "1.6.0"

parser/src/command.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,13 @@ fn review_errors() {
350350
#[test]
351351
fn review_ignored() {
352352
// Checks for things that shouldn't be detected.
353-
for input in ["r", "reviewer? abc", "r foo"] {
353+
for input in [
354+
"r",
355+
"reviewer? abc",
356+
"r foo",
357+
"<a>\n r? @bot\n</a>",
358+
"<!--\nr? foo\n-->",
359+
] {
354360
let mut input = Input::new(input, vec!["bot"]);
355361
assert_eq!(input.next(), None);
356362
}

parser/src/ignore_block.rs

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use pulldown_cmark::{Event, Parser, Tag};
1+
use pulldown_cmark::{Event, Parser, Tag, TagEnd};
22
use std::ops::Range;
33

44
#[derive(Debug)]
@@ -14,25 +14,35 @@ impl IgnoreBlocks {
1414
if let Event::Start(Tag::CodeBlock(_)) = event {
1515
let start = range.start;
1616
while let Some((event, range)) = parser.next() {
17-
if let Event::End(Tag::CodeBlock(_)) = event {
17+
if let Event::End(TagEnd::CodeBlock) = event {
1818
ignore.push(start..range.end);
1919
break;
2020
}
2121
}
22-
} else if let Event::Start(Tag::BlockQuote) = event {
22+
} else if let Event::Start(Tag::BlockQuote(_)) = event {
2323
let start = range.start;
2424
let mut count = 1;
2525
while let Some((event, range)) = parser.next() {
26-
if let Event::Start(Tag::BlockQuote) = event {
26+
if let Event::Start(Tag::BlockQuote(_)) = event {
2727
count += 1;
28-
} else if let Event::End(Tag::BlockQuote) = event {
28+
} else if let Event::End(TagEnd::BlockQuote(_)) = event {
2929
count -= 1;
3030
if count == 0 {
3131
ignore.push(start..range.end);
3232
break;
3333
}
3434
}
3535
}
36+
} else if let Event::Start(Tag::HtmlBlock) = event {
37+
let start = range.start;
38+
while let Some((event, range)) = parser.next() {
39+
if let Event::End(TagEnd::HtmlBlock) = event {
40+
ignore.push(start..range.end);
41+
break;
42+
}
43+
}
44+
} else if let Event::InlineHtml(_) = event {
45+
ignore.push(range);
3646
} else if let Event::Code(_) = event {
3747
ignore.push(range);
3848
}
@@ -92,15 +102,27 @@ fn cbs_1() {
92102
fn cbs_2() {
93103
assert_eq!(
94104
bodies("`hey you` <b>me too</b>"),
95-
[Ignore::Yes("`hey you`"), Ignore::No(" <b>me too</b>")]
105+
[
106+
Ignore::Yes("`hey you`"),
107+
Ignore::No(" "),
108+
Ignore::Yes("<b>"),
109+
Ignore::No("me too"),
110+
Ignore::Yes("</b>")
111+
]
96112
);
97113
}
98114

99115
#[test]
100116
fn cbs_3() {
101117
assert_eq!(
102118
bodies(r"`hey you\` <b>`me too</b>"),
103-
[Ignore::Yes(r"`hey you\`"), Ignore::No(" <b>`me too</b>")]
119+
[
120+
Ignore::Yes("`hey you\\`"),
121+
Ignore::No(" "),
122+
Ignore::Yes("<b>"),
123+
Ignore::No("`me too"),
124+
Ignore::Yes("</b>")
125+
]
104126
);
105127
}
106128

@@ -239,3 +261,24 @@ fn cbs_11() {
239261
],
240262
);
241263
}
264+
265+
#[test]
266+
fn cbs_12() {
267+
assert_eq!(
268+
bodies(
269+
"
270+
Test
271+
272+
<!-- Test -->
273+
<!--
274+
This is an HTML comment.
275+
-->
276+
"
277+
),
278+
[
279+
Ignore::No("\nTest\n\n"),
280+
Ignore::Yes("<!-- Test -->\n"),
281+
Ignore::Yes("<!--\nThis is an HTML comment.\n-->\n")
282+
],
283+
);
284+
}

0 commit comments

Comments
 (0)