]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle HTML 'ol' start attribute in shr.el
authorNicholas Drozd <nicholasdrozd@gmail.com>
Sat, 16 Feb 2019 22:37:52 +0000 (16:37 -0600)
committerEli Zaretskii <eliz@gnu.org>
Fri, 22 Feb 2019 07:52:57 +0000 (09:52 +0200)
* lisp/net/shr.el (shr-tag-ol): Don't automatically assume
1-indexing for all ordered lists, use <ol> if given.

* etc/NEWS: Announce change in shr behavior.

* test/data/shr/ol.html:
* test/data/shr/ol.txt: New test data files.

etc/NEWS
lisp/net/shr.el
test/data/shr/ol.html [new file with mode: 0644]
test/data/shr/ol.txt [new file with mode: 0644]

index 253da49989967067c3b24ce3257b28e66022a5a7..30c42fa5302b4b4469cadfea1a89fcb408b2b9fc 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -698,6 +698,8 @@ has been executed.
 If set, shr will not render tags with attribute 'aria-hidden="true"'.
 This attribute is meant to tell screen readers to ignore a tag.
 
+*** 'shr-tag-ol' now respects the ordered list 'start' attribute.
+
 ** Htmlfontify
 
 *** The functions 'hfy-color', 'hfy-color-vals' and
index 94d68faf2a86f9fce878690983cc4ccf684f2f05..2f628e1caa2100b69aee00cbeeb65d07f4b7c688 100644 (file)
@@ -1755,7 +1755,14 @@ The preference is a float determined from `shr-prefer-media-type'."
 
 (defun shr-tag-ol (dom)
   (shr-ensure-paragraph)
-  (let ((shr-list-mode 1))
+  (let* ((attrs (dom-attributes dom))
+         (start-attr (alist-get 'start attrs))
+         ;; Start at 1 if there is no start attribute
+         ;; or if start can't be parsed as an integer.
+         (start-index (condition-case _
+                          (cl-parse-integer start-attr)
+                        (t 1)))
+         (shr-list-mode start-index))
     (shr-generic dom))
   (shr-ensure-paragraph))
 
diff --git a/test/data/shr/ol.html b/test/data/shr/ol.html
new file mode 100644 (file)
index 0000000..f9a15f2
--- /dev/null
@@ -0,0 +1,29 @@
+<ol>
+  <li>one</li>
+  <li>two</li>
+  <li>three</li>
+</ol>
+
+<ol start="10">
+  <li>ten</li>
+  <li>eleven</li>
+  <li>twelve</li>
+</ol>
+
+<ol start="0">
+  <li>zero</li>
+  <li>one</li>
+  <li>two</li>
+</ol>
+
+<ol start="-5">
+  <li>minus five</li>
+  <li>minus four</li>
+  <li>minus three</li>
+</ol>
+
+<ol start="notanumber">
+  <li>one</li>
+  <li>two</li>
+  <li>three</li>
+</ol>
diff --git a/test/data/shr/ol.txt b/test/data/shr/ol.txt
new file mode 100644 (file)
index 0000000..0d46e2a
--- /dev/null
@@ -0,0 +1,19 @@
+1 one
+2 two
+3 three
+
+10 ten
+11 eleven
+12 twelve
+
+0 zero
+1 one
+2 two
+
+-5 minus five
+-4 minus four
+-3 minus three
+
+1 one
+2 two
+3 three