diff options
author | JD Smith <93749+jdtsmith@users.noreply.github.com> | 2024-07-06 09:22:33 -0400 |
---|---|---|
committer | Stefan Kangas <stefankangas@gmail.com> | 2024-07-06 21:10:39 +0200 |
commit | 9625e4af9946436cea6ba3f41f6c384634bcc999 (patch) | |
tree | d439a42cac08960eb60cac3d87ab88c359aed6cb | |
parent | 83234cc1dbbe19450d2fc8cc27509ee4b05c4877 (diff) | |
download | emacs-9625e4af9946436cea6ba3f41f6c384634bcc999.tar.gz emacs-9625e4af9946436cea6ba3f41f6c384634bcc999.tar.bz2 emacs-9625e4af9946436cea6ba3f41f6c384634bcc999.zip |
Fix formatting of tables with thead/tfoot but no tbody
Correctly handle formatting of tables containing thead and/or tfoot, but
without any tbody, to prevent including thead/tfoot content twice within
the table's derived body.
* lisp/net/shr.el (shr--fix-tbody): Omit 'thead' and 'tfoot' from
implicit body. (Bug#71685)
* test/lisp/net/shr-resources/table.html:
* test/lisp/net/shr-resources/table.txt: New tests for table rendering.
-rw-r--r-- | lisp/net/shr.el | 5 | ||||
-rw-r--r-- | test/lisp/net/shr-resources/table.html | 7 | ||||
-rw-r--r-- | test/lisp/net/shr-resources/table.txt | 5 |
3 files changed, 15 insertions, 2 deletions
diff --git a/lisp/net/shr.el b/lisp/net/shr.el index 3dadcb9a09b..fb72ea6aa67 100644 --- a/lisp/net/shr.el +++ b/lisp/net/shr.el @@ -2261,8 +2261,9 @@ See `outline-search-function' for BOUND, MOVE, BACKWARD and LOOKING-AT." (defun shr--fix-tbody (tbody) (nconc (list 'tbody (dom-attributes tbody)) (cl-loop for child in (dom-children tbody) - collect (if (or (stringp child) - (not (eq (dom-tag child) 'tr))) + for tag = (and (not (stringp child)) (dom-tag child)) + unless (or (eq tag 'thead) (eq tag 'tfoot)) + collect (if (not (eq tag 'tr)) (list 'tr nil (list 'td nil child)) child)))) diff --git a/test/lisp/net/shr-resources/table.html b/test/lisp/net/shr-resources/table.html new file mode 100644 index 00000000000..c5e8875ac91 --- /dev/null +++ b/test/lisp/net/shr-resources/table.html @@ -0,0 +1,7 @@ +<table> +<thead><tr><th>A</th><th>B</th></tr></thead> +<tr><td>1</td><td>2</td></tr> +<tr><td>3</td><td>4</td></tr> +5678 +<tfoot><tr><th>A</th><th>B</th></tr></tfoot> +</table> diff --git a/test/lisp/net/shr-resources/table.txt b/test/lisp/net/shr-resources/table.txt new file mode 100644 index 00000000000..70939effb63 --- /dev/null +++ b/test/lisp/net/shr-resources/table.txt @@ -0,0 +1,5 @@ + A B + 1 2 + 3 4 + 5678 + A B |