features.lisp - clic - Clic is an command line interactive client for gopher wr… | |
git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
features.lisp (717B) | |
--- | |
1 (in-package :alexandria) | |
2 | |
3 (defun featurep (feature-expression) | |
4 "Returns T if the argument matches the state of the *FEATURES* | |
5 list and NIL if it does not. FEATURE-EXPRESSION can be any atom | |
6 or list acceptable to the reader macros #+ and #-." | |
7 (etypecase feature-expression | |
8 (symbol (not (null (member feature-expression *features*)))) | |
9 (cons (check-type (first feature-expression) symbol) | |
10 (eswitch ((first feature-expression) :test 'string=) | |
11 (:and (every #'featurep (rest feature-expression))) | |
12 (:or (some #'featurep (rest feature-expression))) | |
13 (:not (assert (= 2 (length feature-expression))) | |
14 (not (featurep (second feature-expression)))))))) |