Have shr support span style="color: ..."
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Tue, 19 Oct 2010 18:46:32 +0000 (20:46 +0200)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Tue, 19 Oct 2010 18:46:32 +0000 (20:46 +0200)
lisp/ChangeLog
lisp/shr.el

index 528306b..aa81df1 100644 (file)
@@ -1,5 +1,8 @@
 2010-10-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * shr.el (shr-parse-style): New function.
+       (shr-tag-span): Ditto.
+
        * nnmairix.el (nnmairix-summary-mode-hook): Move nnmairix's `$' command
        to `G G' to avoid collisions.
 
index d16899c..e360eab 100644 (file)
@@ -410,6 +410,29 @@ Return a string with image data."
 (defun shr-tag-s (cont)
   (shr-fontize-cont cont 'strike-through))
 
+(defun shr-tag-span (cont)
+  (let ((start (point))
+       (color (cdr (assq 'color (shr-parse-style (cdr (assq :style cont)))))))
+    (shr-generic cont)
+    (when color
+      (let ((overlay (make-overlay start (point))))
+       (overlay-put overlay 'face (cons 'foreground-color color))))))
+
+(defun shr-parse-style (style)
+  (when style
+    (let ((plist nil))
+      (dolist (elem (split-string style ";"))
+       (when elem
+         (setq elem (split-string elem ":"))
+         (when (and (car elem)
+                    (cadr elem))
+           (let ((name (replace-regexp-in-string "^ +\\| +$" "" (car elem)))
+                 (value (replace-regexp-in-string "^ +\\| +$" "" (cadr elem))))
+             (push (cons (intern name obarray)
+                         value)
+                   plist)))))
+      plist)))
+
 (defun shr-tag-a (cont)
   (let ((url (cdr (assq :href cont)))
        (start (point))