]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix rendering of degenerate tables some more in shr.el
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 30 Sep 2019 05:27:46 +0000 (07:27 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 30 Sep 2019 05:27:46 +0000 (07:27 +0200)
* lisp/net/shr.el (shr--fix-tbody): New function (bug#31665).
(shr--fix-table): Use it to fix the
<table><tbody>foo</tbody></table> case.

lisp/net/shr.el

index 64263903bdf97025c134f8fc9b0ca40a44d0cbbc..dc3cc38c7989d0a4153d0a40607e5ef55434f8a7 100644 (file)
@@ -1993,8 +1993,16 @@ BASE is the URL of the HTML being rendered."
       `(tbody nil ,@(cl-reduce 'append
                                (mapcar 'dom-non-text-children tbodies)))))))
 
+(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)))
+                              (list 'tr nil (list 'td nil child))
+                            child))))
+
 (defun shr--fix-table (dom caption header footer)
-  (let* ((body (dom-non-text-children (shr-table-body dom)))
+  (let* ((body (dom-non-text-children (shr--fix-tbody (shr-table-body dom))))
          (nheader (if header (shr-max-columns header)))
         (nbody (if body (shr-max-columns body) 0))
          (nfooter (if footer (shr-max-columns footer))))