[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:03148] Re: テキストの処理について



CtrlAltDel さん、こんにちは。

    Thu, 19 Aug 1999 17:14:25 +0900 の
   “[xyzzy:03143] テキストの処理について”
    への返事です.

| し、ディレクトリ内のメールのFromとSubjectと本文だけを抜き出し
| て一つのファイルにまとめる、とかいう作業は Lisp でも簡単にで
| きるのでしょうか?

簡単かどうかは分かりませんが、こんな感じでしょう。

(defun foo (dir)
  (interactive "Dfoo: ")
  (switch-to-buffer "*foo*")
  (goto-char (point-max))
  (dolist (file (sort (directory dir)
		      #'(lambda (x y)
			  (< (parse-integer x) (parse-integer y)))))
    (let* ((beg (point))
	   (end (progn
		  (insert-file-contents (merge-pathnames file dir))
		  (point)))
	   (body (progn
		   (goto-char beg)
		   (if (scan-buffer "^$" :regexp t)
		       (point)
		     end)))
	   (headers (mapcar #'(lambda (name)
				(goto-char beg)
				(and (scan-buffer (concat "^" name ": .*\\(\n[ \t].*\\)*$")
						  :regexp t :case-fold t :limit body)
				     (match-string 0)))
			    '("From" "Subject"))))
      (delete-region beg body)
      (mapc #'(lambda (x) (insert x "\n")) headers)
      (goto-char beg)
      (decode-mime-header)
      (goto-char (point-max))
      (insert "**********************\n")))
  (goto-char (point-min)))


| のですが、Lisp ではどうやるのでしょうか?Perlでいうm//(パター

このような場合はまるごとバッファに読み込んでからごにょ
ごにょやる方が楽だし効率的だと思いますが、ものによって
は一文字/一行ずつ読み込むほうがいい場合もあるし。

--
亀井哲弥(Tetsuya Kamei)
kamei@xxxxxxxxxxxx/JCA00343@xxxxxxxxxxx

Index Home