[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 510da73: Fix problems with not rendering shr tables with rowspan
From: |
Lars Ingebrigtsen |
Subject: |
master 510da73: Fix problems with not rendering shr tables with rowspan |
Date: |
Thu, 16 Jul 2020 21:13:19 -0400 (EDT) |
branch: master
commit 510da73b4a0ff77d27a208a4177ef21fcdbf766d
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Fix problems with not rendering shr tables with rowspan
* lisp/net/shr.el (shr-max-columns): When rowspans were in effect,
columns would go missing from subsequent lines (bug#42194).
---
lisp/net/shr.el | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index a3f0496..1ba615f 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -2576,12 +2576,29 @@ flags that control whether to collect or render
objects."
i))
(defun shr-max-columns (dom)
- (let ((max 0))
+ (let ((max 0)
+ (this 0)
+ (rowspans nil))
(dolist (row (dom-children dom))
(when (and (not (stringp row))
(eq (dom-tag row) 'tr))
- (setq max (max max (+ (shr-count row 'td)
- (shr-count row 'th))))))
+ (setq this 0)
+ (dolist (column (dom-children row))
+ (when (and (not (stringp column))
+ (or (eq (dom-tag column) 'td)
+ (eq (dom-tag column) 'th)))
+ (setq this (+ (1+ this) (length rowspans)))
+ ;; We have a rowspan, which we emulate later in rendering
+ ;; by adding an extra column to the following rows.
+ (when-let* ((span (dom-attr column 'rowspan)))
+ (push (string-to-number span) rowspans))))
+ (setq max (max max this)))
+ ;; Count down the rowspans in effect.
+ (let ((new nil))
+ (dolist (span rowspans)
+ (when (> span 1)
+ (push (1- span) new)))
+ (setq rowspans new)))
max))
(provide 'shr)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 510da73: Fix problems with not rendering shr tables with rowspan,
Lars Ingebrigtsen <=