Skip to content

Commit 10099ed

Browse files
committed
h-tags closing h-tags
1 parent b7544a6 commit 10099ed

19 files changed

+263
-14
lines changed

src/main/java/org/htmlunit/cyberneko/HTMLTagBalancer.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,7 @@ else if (elementCode == HTMLElements.HEAD && !forcedEndElement) {
11641164

11651165
// empty element
11661166
final int depth = getElementDepth(elem);
1167+
// no matching tag found
11671168
if (depth == -1) {
11681169
if (elementCode == HTMLElements.P) {
11691170
forceStartElement(element, new XMLAttributesImpl(), synthesizedAugs());
@@ -1172,6 +1173,29 @@ else if (elementCode == HTMLElements.HEAD && !forcedEndElement) {
11721173
else if (elementCode == HTMLElements.BR) {
11731174
forceStartElement(element, new XMLAttributesImpl(), synthesizedAugs());
11741175
}
1176+
else if (elementCode == HTMLElements.H1
1177+
|| elementCode == HTMLElements.H2
1178+
|| elementCode == HTMLElements.H3
1179+
|| elementCode == HTMLElements.H4
1180+
|| elementCode == HTMLElements.H5
1181+
|| elementCode == HTMLElements.H6) {
1182+
for (int i = fElementStack.top - 1; i >= 0; i--) {
1183+
final Info info = fElementStack.data[i];
1184+
final short infoElemCode = info.element.code;
1185+
if (infoElemCode == HTMLElements.H1
1186+
|| infoElemCode == HTMLElements.H2
1187+
|| infoElemCode == HTMLElements.H3
1188+
|| infoElemCode == HTMLElements.H4
1189+
|| infoElemCode == HTMLElements.H5
1190+
|| infoElemCode == HTMLElements.H6) {
1191+
if (documentHandler_ != null) {
1192+
addBodyIfNeeded(infoElemCode);
1193+
endElement(info.qname, augs);
1194+
return;
1195+
}
1196+
}
1197+
}
1198+
}
11751199
else if (!elem.isEmpty()) {
11761200
notifyDiscardedEndElement(element, augs);
11771201
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<html>
2+
<body>
3+
<h1>Heading<bold>bold</h2>
4+
<p>delim 1</p>
5+
<h4>H4<h5>H5<p>p</h1></p>
6+
<p>delim 2</p>
7+
</body>
8+
</html>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
(html
2+
(head
3+
)head
4+
(body
5+
"\n
6+
(h1
7+
"Heading
8+
(bold
9+
"bold
10+
)bold
11+
)h1
12+
"\n
13+
(p
14+
"delim 1
15+
)p
16+
"\n
17+
(h4
18+
"H4
19+
)h4
20+
(h5
21+
"H5
22+
(p
23+
"p
24+
)p
25+
)h5
26+
(p
27+
)p
28+
"\n
29+
(p
30+
"delim 2
31+
)p
32+
"\n\n
33+
)body
34+
)html
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
(html
2+
"\n
3+
(head
4+
)head
5+
(body
6+
"\n
7+
(h1
8+
"Heading
9+
(bold
10+
"bold
11+
)bold
12+
)h1
13+
"\n
14+
(p
15+
"delim 1
16+
)p
17+
"\n
18+
(h4
19+
"H4
20+
)h4
21+
(h5
22+
"H5
23+
(p
24+
"p
25+
)p
26+
)h5
27+
(p
28+
)p
29+
"\n
30+
(p
31+
"delim 2
32+
)p
33+
"\n\n\n
34+
)body
35+
)html
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<html><head></head><body>
2+
<h1>Heading<bold>bold</bold></h1>
3+
<p>delim 1</p>
4+
<h4>H4</h4><h5>H5<p>p</p></h5><p></p>
5+
<p>delim 2</p>
6+
7+
</body></html>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
startDocument [(1,1,0) (1,1,0) false]
2+
startElement (localpart="html",rawname="html") [(1,1,0) (1,7,6) false]
3+
startElement (localpart="head",rawname="head",uri="http://www.w3.org/1999/xhtml") [(-1,-1,-1) (-1,-1,-1) true]
4+
endElement (localpart="head",rawname="head",uri="http://www.w3.org/1999/xhtml") [(-1,-1,-1) (-1,-1,-1) true]
5+
startElement (localpart="body",rawname="body") [(2,1,7) (2,7,13) false]
6+
characters '
7+
'[(2,7,13) (3,1,14) false]
8+
startElement (localpart="h1",rawname="h1") [(3,1,14) (3,5,18) false]
9+
characters 'Heading'[(3,5,18) (3,12,25) false]
10+
startElement (localpart="bold",rawname="bold") [(3,12,25) (3,18,31) false]
11+
characters 'bold'[(3,18,31) (3,22,35) false]
12+
endElement (localpart="bold",rawname="bold") [(-1,-1,-1) (-1,-1,-1) true]
13+
endElement (localpart="h1",rawname="h1") [(3,22,35) (3,27,40) false]
14+
characters '
15+
'[(3,27,40) (4,1,41) false]
16+
startElement (localpart="p",rawname="p") [(4,1,41) (4,4,44) false]
17+
characters 'delim 1'[(4,4,44) (4,11,51) false]
18+
endElement (localpart="p",rawname="p") [(4,11,51) (4,15,55) false]
19+
characters '
20+
'[(4,15,55) (5,1,56) false]
21+
startElement (localpart="h4",rawname="h4") [(5,1,56) (5,5,60) false]
22+
characters 'H4'[(5,5,60) (5,7,62) false]
23+
endElement (localpart="h4",rawname="h4") [(-1,-1,-1) (-1,-1,-1) true]
24+
startElement (localpart="h5",rawname="h5") [(5,7,62) (5,11,66) false]
25+
characters 'H5'[(5,11,66) (5,13,68) false]
26+
startElement (localpart="p",rawname="p") [(5,13,68) (5,16,71) false]
27+
characters 'p'[(5,16,71) (5,17,72) false]
28+
endElement (localpart="p",rawname="p") [(-1,-1,-1) (-1,-1,-1) true]
29+
endElement (localpart="h5",rawname="h5") [(5,17,72) (5,22,77) false]
30+
startElement (localpart="p",rawname="p") [(-1,-1,-1) (-1,-1,-1) true]
31+
endElement (localpart="p",rawname="p") [(5,22,77) (5,26,81) false]
32+
characters '
33+
'[(5,26,81) (6,1,82) false]
34+
startElement (localpart="p",rawname="p") [(6,1,82) (6,4,85) false]
35+
characters 'delim 2'[(6,4,85) (6,11,92) false]
36+
endElement (localpart="p",rawname="p") [(6,11,92) (6,15,96) false]
37+
characters '
38+
'[(6,15,96) (7,1,97) false]
39+
characters '
40+
'[(8,8,112) (9,1,113) false]
41+
endElement (localpart="body",rawname="body") [(7,1,97) (7,8,104) false]
42+
endElement (localpart="html",rawname="html") [(8,1,105) (8,8,112) false]
43+
endDocument [(9,1,113) (9,1,113) false]
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<html>
2+
<body>
3+
<h1>Heading</h2>
4+
<p>delim 1</p>
5+
<h4>Heading</h1>
6+
<p>delim 2</p>
7+
</body>
8+
</html>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
(html
2+
(head
3+
)head
4+
(body
5+
"\n
6+
(h1
7+
"Heading
8+
)h1
9+
"\n
10+
(p
11+
"delim 1
12+
)p
13+
"\n
14+
(h4
15+
"Heading
16+
)h4
17+
"\n
18+
(p
19+
"delim 2
20+
)p
21+
"\n\n
22+
)body
23+
)html
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
(html
2+
"\n
3+
(head
4+
)head
5+
(body
6+
"\n
7+
(h1
8+
"Heading
9+
)h1
10+
"\n
11+
(p
12+
"delim 1
13+
)p
14+
"\n
15+
(h4
16+
"Heading
17+
)h4
18+
"\n
19+
(p
20+
"delim 2
21+
)p
22+
"\n\n\n
23+
)body
24+
)html
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<html><head></head><body>
2+
<h1>Heading</h1>
3+
<p>delim 1</p>
4+
<h4>Heading</h4>
5+
<p>delim 2</p>
6+
7+
</body></html>

0 commit comments

Comments
 (0)