Fixes #523.
Added test case to test flexibility. Updated old test case 443678, which is better with this fix. This fixes #523 and tries to be as general as possible. Right now the fix is only applied if the prev or next tag is a body level div, but perhaps should be applied for anything that's acting as block level element. In any case, the specific bug is killed.
This commit is contained in:
parent
a873a190e1
commit
b5d28d7d30
regression_testing/cases
github-cases
github-expects
legacy-expects
src
4
regression_testing/cases/github-cases/case-523.conf
Executable file
4
regression_testing/cases/github-cases/case-523.conf
Executable file
|
@ -0,0 +1,4 @@
|
|||
# Config for test case.
|
||||
tidy-mark: no
|
||||
indent: no
|
||||
wrap: 99999
|
28
regression_testing/cases/github-cases/case-523@1.html
Normal file
28
regression_testing/cases/github-cases/case-523@1.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!--
|
||||
This test case is for issue #523, in which a space is placed after the
|
||||
closing tag of certain elements. For example below, a space is added after
|
||||
the first script closing tag and after the img tag.
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>test</title>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
<h1>Hello</h1>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
<img src="hi.jpg">
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
<p>This is a block level element, and as such, is capable of inlining inline elements.<script type="text/javascript">let x = "Hello, world"</script> Scripts are inline elements, so this script should be included in the flow.</p>
|
||||
<script type="text/javascript"></script><img src="bye.jpg"><script type="text/javascript"></script>
|
||||
<hr>
|
||||
<p>This is another paragraph with an <img src="meh.jpg"> tag inline.</p>
|
||||
<img src="one.jpg"><img src="two.jpg"><img src="three.jpg">
|
||||
</body>
|
||||
</html>
|
27
regression_testing/cases/github-expects/case-523.html
Normal file
27
regression_testing/cases/github-expects/case-523.html
Normal file
|
@ -0,0 +1,27 @@
|
|||
<!--
|
||||
This test case is for issue #523, in which a space is placed after the
|
||||
closing tag of certain elements. For example below, a space is added after
|
||||
the first script closing tag and after the img tag.
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>test</title>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript"></script>
|
||||
<script type="text/javascript"></script>
|
||||
<h1>Hello</h1>
|
||||
<script type="text/javascript"></script><img src="hi.jpg">
|
||||
<script type="text/javascript"></script>
|
||||
<p>This is a block level element, and as such, is capable of inlining inline elements.
|
||||
<script type="text/javascript">
|
||||
let x = "Hello, world"
|
||||
</script> Scripts are inline elements, so this script should be included in the flow.</p>
|
||||
<script type="text/javascript"></script><img src="bye.jpg">
|
||||
<script type="text/javascript"></script>
|
||||
<hr>
|
||||
<p>This is another paragraph with an <img src="meh.jpg"> tag inline.</p>
|
||||
<img src="one.jpg"><img src="two.jpg"><img src="three.jpg">
|
||||
</body>
|
||||
</html>
|
26
regression_testing/cases/github-expects/case-523.txt
Normal file
26
regression_testing/cases/github-expects/case-523.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
line 19 column 1 - Warning: <img> lacks "alt" attribute
|
||||
line 23 column 41 - Warning: <img> lacks "alt" attribute
|
||||
line 25 column 38 - Warning: <img> lacks "alt" attribute
|
||||
line 26 column 1 - Warning: <img> lacks "alt" attribute
|
||||
line 26 column 20 - Warning: <img> lacks "alt" attribute
|
||||
line 26 column 39 - Warning: <img> lacks "alt" attribute
|
||||
Info: Document content looks like HTML5
|
||||
Tidy found 6 warnings and 0 errors!
|
||||
|
||||
The alt attribute should be used to give a short description
|
||||
of an image; longer descriptions should be given with the
|
||||
longdesc attribute which takes a URL linked to the description.
|
||||
These measures are needed for people using non-graphical browsers.
|
||||
|
||||
For further advice on how to make your pages accessible
|
||||
see https://www.w3.org/WAI/GL.
|
||||
About HTML Tidy: https://github.com/htacg/tidy-html5
|
||||
Bug reports and comments: https://github.com/htacg/tidy-html5/issues
|
||||
Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/
|
||||
Latest HTML specification: https://html.spec.whatwg.org/multipage/
|
||||
Validate your HTML documents: https://validator.w3.org/nu/
|
||||
Lobby your company to join the W3C: https://www.w3.org/Consortium
|
||||
|
||||
Do you speak a language other than English, or a different variant of
|
||||
English? Consider helping us to localize HTML Tidy. For details please see
|
||||
https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md
|
|
@ -18,7 +18,7 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
Just a test.
|
||||
Just a test.
|
||||
<script>
|
||||
|
||||
test();
|
||||
|
|
16
src/parser.c
16
src/parser.c
|
@ -413,6 +413,14 @@ static Bool CleanLeadingWhitespace(TidyDocImpl* ARG_UNUSED(doc), Node* node)
|
|||
|
||||
if (node->parent->tag && node->parent->tag->parser == TY_(ParseScript))
|
||||
return no;
|
||||
|
||||
/* #523, prevent blank spaces after script if the next item is script.
|
||||
* This is actually more generalized as, if the preceding element is
|
||||
* a body level script, then indicate that we want to clean leading
|
||||
* whitespace.
|
||||
*/
|
||||
if ( node->prev && nodeIsSCRIPT(node->prev) && nodeIsBODY(node->prev->parent) )
|
||||
return yes;
|
||||
|
||||
/* <p>...<br> <em>...</em>...</p> */
|
||||
if (nodeIsBR(node->prev))
|
||||
|
@ -454,6 +462,14 @@ static Bool CleanTrailingWhitespace(TidyDocImpl* doc, Node* node)
|
|||
if (node->parent->tag && node->parent->tag->parser == TY_(ParseScript))
|
||||
return no;
|
||||
|
||||
/* #523, prevent blank spaces after script if the next item is script.
|
||||
* This is actually more generalized as, if the next element is
|
||||
* a body level script, then indicate that we want to clean trailing
|
||||
* whitespace.
|
||||
*/
|
||||
if ( node->next && nodeIsSCRIPT(node->next) && nodeIsBODY(node->next->parent) )
|
||||
return yes;
|
||||
|
||||
next = node->next;
|
||||
|
||||
/* <p>... </p> */
|
||||
|
|
Loading…
Reference in a new issue