* gnus-vers.el (gnus-revision-number): Increment to 02.
[elisp/gnus.git-] / lisp / nnwfm.el
index 5ec1a06..17f2656 100644 (file)
@@ -29,6 +29,7 @@
 ;;; Code:
 
 (eval-when-compile (require 'cl))
+(eval-when-compile (require 'gnus-clfns))
 
 (require 'nnoo)
 (require 'message)
 (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
            (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)
-                           (nth (1- (cdr art)) contents)
-                           subject)
-                     nnwfm-articles))))
+             (push (list (car art)
+                         (nth (1- (cdr art)) contents)
+                         subject)
+                   nnwfm-articles))))
        (setq nnwfm-articles
              (sort nnwfm-articles 'car-less-than-car))
        ;; Now we have all the articles, conveniently in an alist
 (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))
          (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))
       (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
   (unless nnwfm-groups-alist
     (nnwfm-read-groups)
     (setq nnwfm-groups (cdr (assoc nnwfm-address
-                                       nnwfm-groups-alist)))))
+                                  nnwfm-groups-alist)))))
 
 (deffoo nnwfm-open-server (server &optional defs connectionless)
   (nnheader-init-server-buffer)
        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)