;
; 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: +\\(ACM \\)?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)))
from
subject
here)
(save-excursion
(set-buffer nndoc-current-buffer)
(setq here (buffer-substring (car entry) (nth 3 entry)))
(with-temp-buffer
(insert here)
(quoted-printable-decode-region (point-min) (point-max))
(goto-char (point-min))
(search-forward "")
(setq here (point))
(search-forward "")
(backward-char 4)
(setq subject (buffer-substring here (point)))
(if (re-search-forward ".*([01][0-9]/[0-3][0-9]/[0-9][0-9]) *" nil t)
(progn
(setq here (point))
(search-forward "")
(backward-char 4)
(skip-chars-backward " ")
(if (equal here (point))
(setq from "ACM TechNews")
(setq from (buffer-substring here (point)))))
(setq from "ACM TechNews"))
))
(insert "From: " from "\n"
"Subject: " subject "\n")
))
(defun nndoc-transform-technews-summary-article (article)
"Transform a TechNews summary article so that it matches nndoc expectations."
(let (here)
(goto-char (point-min))
(quoted-printable-decode-region (point-min) (point-max))
(gnus-article-de-quoted-unreadable t)
(replace-string "
" "" nil (point-min) (point-max))
(goto-char (point-min))
(search-forward "")
(delete-region (point-min) (point))
(insert "Subject: ")
(search-forward "")
(delete-backward-char 4)
(setq here (point))
(end-of-line)
(delete-region here (point))
(forward-char 1)
(setq here (point))
(if (re-search-forward " *" nil t)
(progn
(delete-region here (point))
(insert "From: ")
(search-forward "")
(backward-char 4)
(skip-chars-backward " ")
(setq here (point))
(end-of-line)
(delete-region here (point)))
(insert ("From: ACM TechNews")))
(forward-char 1)
(insert "\n")
(while (looking-at "\n")
(delete-char 1))
(search-forward "