; ; ACM Technews ; (defun nndoc-technews-summary-type-p nil "Decide whether an article is an ACM TechNews digest" (let ((case-fold-search t)) (not (not (and (re-search-forward "^From: TechNews" nil t) (re-search-forward "^Subject: \\(ACM \\)?TechNews" nil t) ;(re-search-forward "^Dear ACM TechNews Subscriber:$" nil t) (re-search-forward "^Read the TechNews Online at:" nil t) ))) )) (defun nndoc-generate-technews-summary-head (article) "Generate headers for an ACM TechNews 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) (skip-chars-backward "\" ") (setq subject (buffer-substring here (point))) )) (insert "From: TechNews\n" "Subject: " subject "\n") )) (defun nndoc-transform-technews-summary-article (article) "Transform a Technews summary article so that it matches nndoc expectations." (goto-char (point-min)) (if (eq (following-char) ?\") (delete-char 1)) (insert "Subject: ") (end-of-line) (while (looking-at "\n[ ]") (forward-line) (end-of-line)) (backward-char 1) (while (looking-at "[ \"]") (delete-char 1) (backward-char 1)) (gnus-article-fill-long-lines) ) (nndoc-add-type '(technews-summary (first-article . "^\\*\\{5,\\} News Stories \\*\\{5,\\}\\( \.\.\.\\)?\n\n") ;(article-begin . "\n\"\\|^ ?- - - - - - - - - - ") (article-begin . "\n\"\\|^\n*----=_NextPart_") ;(head-end . "\" ?\n") (head-end . "\n\n") (body-begin . "^") (body-end . "^$") ;(file-end . "^ ?- - - - - - - - - - ") (file-end . "^\n*----=_NextPart_") (generate-head-function . nndoc-generate-technews-summary-head) (article-transform-function . nndoc-transform-technews-summary-article) ) t)