Function: shr--preferred-image
shr--preferred-image is a byte-compiled function defined in shr.el.gz.
Signature
(shr--preferred-image DOM)
Source Code
;; Defined in /usr/src/emacs/lisp/net/shr.el.gz
(defun shr--preferred-image (dom)
(let ((srcset (dom-attr dom 'srcset))
(frame-width (frame-pixel-width))
(width (string-to-number (or (dom-attr dom 'width) "100")))
candidate)
(when (> (length srcset) 0)
;; srcset consist of a series of URL/size specifications
;; separated by the ", " string.
(setq srcset
(sort (mapcar
(lambda (elem)
(let ((spec (split-string elem "[\t\n\r ]+")))
(cond
((= (length spec) 1)
;; Make sure it's well formed.
(list (car spec) 0))
((string-match "\\([0-9]+\\)x\\'" (cadr spec))
;; If we have an "x" form, then use the width
;; spec to compute the real width.
(list (car spec)
(* width (string-to-number
(match-string 1 (cadr spec))))))
(t
(list (car spec)
(string-to-number (cadr spec)))))))
(split-string (replace-regexp-in-string
"\\`[\t\n\r ]+\\|[\t\n\r ]+\\'" "" srcset)
"[\t\n\r ]*,[\t\n\r ]*"))
(lambda (e1 e2)
(> (cadr e1) (cadr e2)))))
;; Choose the smallest picture that's bigger than the current
;; frame.
(setq candidate (caar srcset))
(while (and srcset
(> (cadr (car srcset)) frame-width))
(setq candidate (caar srcset))
(pop srcset)))
(or candidate (dom-attr dom 'src))))