Skip to content

Commit 2f33a9d

Browse files
Merge pull request #546 from Automattic/html-spaces
feat(html): condense spaces like most HTML parsers
2 parents 6990d06 + b1a76ac commit 2f33a9d

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

harper-html/src/lib.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
use harper_core::parsers::{self, Parser, PlainEnglish};
2-
use harper_core::Token;
2+
use harper_core::{Token, TokenKind};
33
use harper_tree_sitter::TreeSitterMasker;
44
use tree_sitter::Node;
55

66
pub struct HtmlParser {
7+
/// Used to grab the text nodes.
78
inner: parsers::Mask<TreeSitterMasker, PlainEnglish>,
89
}
910

@@ -26,6 +27,14 @@ impl Default for HtmlParser {
2627

2728
impl Parser for HtmlParser {
2829
fn parse(&self, source: &[char]) -> Vec<Token> {
29-
self.inner.parse(source)
30+
let mut tokens = self.inner.parse(source);
31+
32+
for token in &mut tokens {
33+
if let TokenKind::Space(v) = &mut token.kind {
34+
*v = (*v).clamp(0, 1);
35+
}
36+
}
37+
38+
tokens
3039
}
3140
}

harper-html/tests/run_tests.rs

+1
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,4 @@ macro_rules! create_test {
3838

3939
create_test!(run_on.html, 0);
4040
create_test!(issue_156.html, 0);
41+
create_test!(issue_541.html, 0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
</head>
7+
8+
<body>
9+
<p>
10+
This block contains multiple lines of HTML. If Harper is throwing a "too many spaces" lint, it's
11+
because <code>harper-html</code> isn't properly parsing the indent.
12+
</p>
13+
</body>
14+
15+
</html>

0 commit comments

Comments
 (0)