; ; Edupage ; (defun nndoc-edupage-type-p nil "Decide whether an article is an Edupage digest" (let ((case-fold-search t)) (not (not (and (re-search-forward "^From: .*EDUCAUSE@EDUCAUSE.EDU" nil t) (re-search-forward "^Subject: Edupage," nil t) (re-search-forward "^Edupage is a service of EDUCAUSE, a nonprofit association$" nil t) ))) )) (defun nndoc-generate-edupage-head (article) "Generate headers for an Edupage digest article" (let ((entry (cdr (assq article nndoc-dissection-alist))) subject here) (save-excursion (set-buffer nndoc-current-buffer) (save-restriction (narrow-to-region (car entry) (nth 3 entry)) (goto-char (point-min)) (skip-chars-forward "\n \t") (setq here (point)) (end-of-line) (setq subject (buffer-substring here (point))) )) (insert "From: Educause \n" "Reply-To: edupage-editors@EDUCAUSE.EDU\n" "Subject: " subject "\n") )) (defun nndoc-transform-edupage-article (article) "Transform an Edupage summary article so that it matches nndoc expectations." (goto-char (point-min)) (insert "Subject: ") ) (nndoc-add-type '(edupage (first-article . "^TOP STORIES FOR .*\n\\( .*\n\\)+\n\n") ;(first-article . "^TOP STORIES FOR .*\n\n\\(.+\n\\)+\n\n") (article-begin . "\n[^\n]") (head-end . "\n") (body-begin . "^") (body-end . "^$") (file-end . "^\\*\\{5,\\}\nEDUPAGE INFORMATION$") (generate-head-function . nndoc-generate-edupage-head) (article-transform-function . nndoc-transform-edupage-article) ) t)