diff options
author | David Maus <dmaus@ictsoc.de> | 2010-06-19 19:25:40 +0000 |
---|---|---|
committer | Carsten Dominik <carsten.dominik@gmail.com> | 2010-07-01 15:08:43 +0200 |
commit | ea47dd58ffabe55f710e1ea673b22e4c4e4fd3ef (patch) | |
tree | e04fe07c005053c9d5843fbbfbfc7ec4c1df13e6 | |
parent | 516640aff96b627d8ad412f6cdb436535600aff0 (diff) | |
download | org-mode-ea47dd58ffabe55f710e1ea673b22e4c4e4fd3ef.tar.gz |
Unescape protected entities defined in `xml-entity-alist'.
* org-feed.el (org-feed-unescape): New function. Unescape
protected entities.
(org-feed-parse-atom-entry): Use function for atom:content
type text and html.
-rw-r--r-- | lisp/org-feed.el | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lisp/org-feed.el b/lisp/org-feed.el index c86ca90..19e4bf2 100644 --- a/lisp/org-feed.el +++ b/lisp/org-feed.el @@ -267,6 +267,17 @@ have been saved." (defvar org-feed-buffer "*Org feed*" "The buffer used to retrieve a feed.") +(defun org-feed-unescape (s) + "Unescape protected entities in S." + (let ((re (concat "&\\(" + (mapconcat (lambda (e) + (car e)) xml-entity-alist "\\|") + "\\);"))) + (while (string-match re s) + (setq s (replace-match + (cdr (assoc (match-string 1 s) xml-entity-alist)) nil nil s))) + s)) + ;;;###autoload (defun org-feed-update-all () "Get inbox items from all feeds in `org-feed-alist'." @@ -646,10 +657,10 @@ formatted as a string, not the original XML data." (cond ((string= type "text") ;; We like plain text. - (setq entry (plist-put entry :description (car (xml-node-children content))))) + (setq entry (plist-put entry :description (org-feed-unescape (car (xml-node-children content)))))) ((string= type "html") ;; TODO: convert HTML to Org markup. - (setq entry (plist-put entry :description (car (xml-node-children content))))) + (setq entry (plist-put entry :description (org-feed-unescape (car (xml-node-children content)))))) ((string= type "xhtml") ;; TODO: convert XHTML to Org markup. (setq entry (plist-put entry :description (prin1-to-string (xml-node-children content))))) |