X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fnnwfm.el;h=d759d12f798d17446ff3cc8e39d0815475a6a16c;hb=c9490ec7706cc97ba8f396f947a59dc0ea543c9f;hp=5ec1a06cfb70d704b5cde3ff7d74149996e55ff6;hpb=f2ae80d76acaa0a00ef362dacb7ae42ef4bd2e31;p=gnus diff --git a/lisp/nnwfm.el b/lisp/nnwfm.el index 5ec1a06cf..d759d12f7 100644 --- a/lisp/nnwfm.el +++ b/lisp/nnwfm.el @@ -1,5 +1,6 @@ ;;; nnwfm.el --- interfacing with a web forum -;; Copyright (C) 2000 Free Software Foundation, Inc. + +;; Copyright (C) 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -18,8 +19,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -36,11 +37,9 @@ (require 'gnus) (require 'nnmail) (require 'mm-util) -(eval-when-compile - (ignore-errors - (require 'nnweb))) -;; Report failure to find w3 at load time if appropriate. -(eval '(require 'nnweb)) +(require 'mm-url) +(require 'nnweb) +(autoload 'w3-parse-buffer "w3-parse") (nnoo-declare nnwfm) @@ -56,7 +55,7 @@ (defvoo nnwfm-groups nil) (defvoo nnwfm-headers nil) (defvoo nnwfm-articles nil) -(defvar nnwfm-table-regexp +(defvar nnwfm-table-regexp "postings.*editpost\\|forumdisplay\\|Forum[0-9]+/HTML\\|getbio") ;;; Interface functions @@ -116,24 +115,28 @@ (erase-buffer) (setq subject (nth 2 (assq (car elem) topics)) thread-id (nth 0 (assq (car elem) topics))) - (nnweb-insert + (mm-url-insert (concat nnwfm-address (format "Item.asp?GroupID=%d&ThreadID=%d" sid thread-id))) (goto-char (point-min)) - (setq contents - (ignore-errors (w3-parse-buffer (current-buffer)))) - (setq tables (caddar (caddar (cdr (caddar (caddar contents)))))) + (setq tables (caddar + (caddar + (cdr (caddar + (caddar + (ignore-errors + (w3-parse-buffer (current-buffer))))))))) (setq tables (cdr (caddar (memq (assq 'div tables) tables)))) (setq contents nil) (dolist (table tables) - (setq table (caddar (caddar (caddr table))) - hstuff (delete ":link" (nnweb-text (car table))) - bstuff (car (caddar (cdr table))) - from (car hstuff)) - (when (nth 2 hstuff) - (setq time (nnwfm-date-to-time (nth 2 hstuff))) - (push (list from time bstuff) contents))) + (when (eq (car table) 'table) + (setq table (caddar (caddar (caddr table))) + hstuff (delete ":link" (nnweb-text (car table))) + bstuff (car (caddar (cdr table))) + from (car hstuff)) + (when (nth 2 hstuff) + (setq time (nnwfm-date-to-time (nth 2 hstuff))) + (push (list from time bstuff) contents)))) (setq contents (nreverse contents)) (dolist (art (cdr elem)) (push (list (car art) @@ -212,7 +215,7 @@ (deffoo nnwfm-request-list (&optional server) (nnwfm-possibly-change-server nil server) (mm-with-unibyte-buffer - (nnweb-insert + (mm-url-insert (if (string-match "/$" nnwfm-address) (concat nnwfm-address "Group.asp") nnwfm-address)) @@ -229,7 +232,7 @@ (setq description (car (last (nnweb-text (nth 1 row))))) (setq articles (string-to-number - (nnweb-replace-in-string + (gnus-replace-in-string (car (last (nnweb-text (nth 3 row)))) "," ""))) (when (and href (string-match "GroupId=\\([0-9]+\\)" href)) @@ -275,30 +278,33 @@ (while furls (erase-buffer) (push (car furls) fetched-urls) - (nnweb-insert (pop furls)) + (mm-url-insert (pop furls)) (goto-char (point-min)) (while (re-search-forward " wr(" nil t) (forward-char -1) (setq elem (message-tokenize-header - (buffer-substring - (1+ (point)) - (progn - (forward-sexp 1) - (1- (point)))))) + (gnus-replace-in-string + (buffer-substring + (1+ (point)) + (progn + (forward-sexp 1) + (1- (point)))) + "\\\\[\"\\\\]" ""))) (push (list (string-to-number (nth 1 elem)) - (nnweb-replace-in-string (nth 2 elem) "\"" "") + (gnus-replace-in-string (nth 2 elem) "\"" "") (string-to-number (nth 5 elem))) forum-contents)) (when (re-search-forward "href=\"\\(Thread.*DateLast=\\([^\"]+\\)\\)" nil t) (setq url (match-string 1) - time (nnwfm-date-to-time (url-unhex-string (match-string 2)))) + time (nnwfm-date-to-time (gnus-url-unhex-string + (match-string 2)))) (when (and (nnwfm-new-threads-p group time) (not (member (setq url (concat nnwfm-address - (nnweb-decode-entities-string url))) + (mm-url-decode-entities-string url))) fetched-urls))) (push url furls)))) ;; The main idea here is to map Gnus article numbers to @@ -371,7 +377,7 @@ nnwfm-groups-alist) (with-temp-file (expand-file-name "groups" nnwfm-directory) (prin1 nnwfm-groups-alist (current-buffer)))) - + (defun nnwfm-init (server) "Initialize buffers and such." (unless (file-exists-p nnwfm-directory) @@ -423,4 +429,5 @@ ;; coding: iso-8859-1 ;; End: +;;; arch-tag: d813966a-4211-4557-ad11-d1ac2bc86536 ;;; nnwfm.el ends here