Function: gnus-treat-predicate

gnus-treat-predicate is a byte-compiled function defined in gnus-art.el.gz.

Signature

(gnus-treat-predicate VAL)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-art.el.gz
(defun gnus-treat-predicate (val)
  (cond
   ((null val)
    nil)
   (gnus-treat-condition
    (eq gnus-treat-condition val))
   ((stringp (car-safe val))
    (let ((name (or gnus-newsgroup-name "")))
      (seq-some (lambda (s) (string-match-p s name)) val)))
   ((listp val)
    (let ((pred (pop val)))
      (cond
       ((eq pred 'or)
	(apply #'gnus-or (mapcar #'gnus-treat-predicate val)))
       ((eq pred 'and)
	(apply #'gnus-and (mapcar #'gnus-treat-predicate val)))
       ((eq pred 'not)
	(not (gnus-treat-predicate (car val))))
       ((eq pred 'typep)
	(equal (car val) gnus-treat-type))
       ((functionp pred)
	(funcall pred))
       (t
	(error "%S is not a valid predicate" pred)))))
   ((eq val t)
    t)
   ((eq val 'head)
    nil)
   ((eq val 'first)
    (eq gnus-treat-part-number 1))
   ((eq val 'last)
    (eq gnus-treat-part-number gnus-treat-total-parts))
   ((numberp val)
    (< gnus-treat-length val))
   (t
    (error "%S is not a valid value" val))))