From 571855b6310390faa67d00bef0b0bc7aa118348f Mon Sep 17 00:00:00 2001 From: Ulf Jasper Date: Sun, 6 Dec 2009 18:13:19 +0000 Subject: [PATCH] Fixed Bug#5008. --- lisp/ChangeLog | 12 ++++++++++++ lisp/net/newst-backend.el | 32 +++++++------------------------- lisp/xml.el | 19 +++++++++++++++++++ 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index aaa1a4b861e..57d5b213bb9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,15 @@ +2009-12-06 Ulf Jasper + + * xml.el (xml-substitute-numeric-entities): Moved + newsticker--decode-numeric-entities in newst-backend.el to + xml-substitute-numeric-entities in xml.el. (Bug#5008) + + * net/newst-backend.el (newsticker--parse-generic-feed) + (newsticker--parse-generic-items) + (newsticker--decode-numeric-entities): Moved + newsticker--decode-numeric-entities in newst-backend.el to + xml-substitute-numeric-entities in xml.el. (Bug#5008) + 2009-12-06 Daniel Colascione * progmodes/js.el (js--js-not): Add null to the list of values. diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el index 24c4c89fb84..ae028516fb8 100644 --- a/lisp/net/newst-backend.el +++ b/lisp/net/newst-backend.el @@ -7,7 +7,7 @@ ;; Filename: newst-backend.el ;; URL: http://www.nongnu.org/newsticker ;; Keywords: News, RSS, Atom -;; Time-stamp: "4. Dezember 2009, 20:08:17 (ulf)" +;; Time-stamp: "5. Dezember 2009, 13:21:27 (ulf)" ;; ====================================================================== @@ -1408,9 +1408,9 @@ description, link, and extra elements resp." (position 0) (something-was-added nil)) ;; decode numeric entities - (setq title (newsticker--decode-numeric-entities title)) - (setq desc (newsticker--decode-numeric-entities desc)) - (setq link (newsticker--decode-numeric-entities link)) + (setq title (xml-substitute-numeric-entities title)) + (setq desc (xml-substitute-numeric-entities desc)) + (setq link (xml-substitute-numeric-entities link)) ;; remove whitespace from title, desc, and link (setq title (newsticker--remove-whitespace title)) (setq desc (newsticker--remove-whitespace desc)) @@ -1462,10 +1462,10 @@ argument, which is one of the items in ITEMLIST." (when (or (> (length title) 0) (> (length desc) 0)) ;; decode numeric entities - (setq title (newsticker--decode-numeric-entities title)) + (setq title (xml-substitute-numeric-entities title)) (when desc - (setq desc (newsticker--decode-numeric-entities desc))) - (setq link (newsticker--decode-numeric-entities link)) + (setq desc (xml-substitute-numeric-entities desc))) + (setq link (xml-substitute-numeric-entities link)) ;; remove whitespace from title, desc, and link (setq title (newsticker--remove-whitespace title)) (setq desc (newsticker--remove-whitespace desc)) @@ -1517,24 +1517,6 @@ argument, which is one of the items in ITEMLIST." ;; ====================================================================== ;;; Misc ;; ====================================================================== -(defun newsticker--decode-numeric-entities (string) - "Decode SGML numeric entities by their respective utf characters. -This function replaces numeric entities in the input STRING and -returns the modified string. For example \"*\" gets replaced -by \"*\"." - (if (and string (stringp string)) - (let ((start 0)) - (while (string-match "&#\\([0-9]+\\);" string start) - (condition-case nil - (setq string (replace-match - (string (read (substring string - (match-beginning 1) - (match-end 1)))) - nil nil string)) - (error nil)) - (setq start (1+ (match-beginning 0)))) - string) - nil)) (defun newsticker--remove-whitespace (string) "Remove leading and trailing whitespace from STRING." diff --git a/lisp/xml.el b/lisp/xml.el index e86232d5718..ac96286fdec 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -823,6 +823,25 @@ This follows the rule [28] in the XML specifications." "") (substring string point)))))) +(defun xml-substitute-numeric-entities (string) + "Substitute SGML numeric entities by their respective utf characters. +This function replaces numeric entities in the input STRING and +returns the modified string. For example \"*\" gets replaced +by \"*\"." + (if (and string (stringp string)) + (let ((start 0)) + (while (string-match "&#\\([0-9]+\\);" string start) + (condition-case nil + (setq string (replace-match + (string (read (substring string + (match-beginning 1) + (match-end 1)))) + nil nil string)) + (error nil)) + (setq start (1+ (match-beginning 0)))) + string) + nil)) + ;;******************************************************************* ;;** ;;** Printing a tree. -- 2.11.4.GIT