APEL version
Shuhei KOBAYASHI
shuhei @ aqua.ocn.ne.jp
1999年 11月 9日 (火) 19:38:02 JST
>>>>> In <14375.34213.571464.61603M @ wanderlust.dq.isl.ntt.co.jp>,
>>>>> teranisi @ gohome.org (Yuuichi Teranishi/寺西裕一) wrote:
> 「product-version XX以上の feature が provide されているか判定」-p
> みたいなのが general に用意されてると便利かもしれないと思います。
> ;; どうやって実現するかは?ですが..。
こんなものでいいんでしょうか?
;; (product-find-by-name "APEL") => ["APEL" (9 23) "Nippori"]
;; (product>= (product-find-by-name "APEL") '(9 22)) => t
;; (product>= (product-find-by-name "APEL") '(9 22 1)) => t
;; (product>= (product-find-by-name "APEL") '(9 23)) => t
;; (product>= (product-find-by-name "APEL") '(9 23 1)) => nil
;; (product>= (product-find-by-name "APEL") '(9 24)) => nil
(defun product>= (product require-version)
(let ((product-version (product-version product)))
(while (and product-version require-version
(= (car product-version)(car require-version)))
(setq product-version (cdr product-version)
require-version (cdr require-version)))
(cond
((null require-version))
(product-version
(> (car product-version)(car require-version))))))
;; (product-find-by-feature 'poe) => ["APEL" (9 23) "Nippori"]
;; (product-require 'poe '(9 22)) => t
;; (product-require 'poe '(9 23)) => t
;; (product-require 'poe '(9 24)) => nil
(defun product-require (feature version)
(when (require feature nil t)
(let ((product (product-find-by-feature feature)))
(when product
(product>= product version)))))
ただし, `require' は byte-compiler で特別扱いされているはずなので,
`require' を `product-require' で代用するのでなく, (require FEATURE)
した後で (product-require FEATURE VERSION) で判定する方が無難だと
思います.
--
Shuhei KOBAYASHI
More information about the APEL-ja
mailing list