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

does `shimbun-header-*' return nil or ""?



ところで、たぶん nnshimbun に限った話ですが、随所にあるこのよう
な式において、

(or (shimbun-header-from header) "(nobody)")

関数 `shimbun-header-*' が有意な値を返さない場合の戻り値は nil
に統一されていないような気がします。
少なくとも `shimbun-header-date' は "" を返すみたい。
とりあえず `or' の代わりにこんなもので逃げます。

(defvar nnshimbun-tmp-string nil
  "Internal variable used to just a rest for a temporary string.")

(defmacro nnshimbun-string-or (&rest strings)
  "Return the first element of STRINGS that is a non-blank string.  It
should run fast, especially if two strings are given."
  (cond ((<= (length strings) 1)
	 (car strings))
	((eq (length strings) 2)
	 `(if (zerop (length (setq nnshimbun-tmp-string ,(car strings))))
	      ,(cadr strings)
	    nnshimbun-tmp-string))
	(t
	 `(let ((strings (list ,@strings)))
	    (while strings
	      (setq strings (if (zerop (length (setq nnshimbun-tmp-string
						     (car strings))))
				(cdr strings))))
	    nnshimbun-tmp-string))))
-- 
Katsumi Yamaoka <yamaoka@jpl.org>
;; なぜか今日は ML の配送が遅いみたいですね。