From 4832959fe1e1a34984763a6d861fac07e3c8d847 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Mon, 18 Sep 2023 16:45:23 +0200 Subject: [PATCH] Define type plist --- src/pattern/questionnaire.lisp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pattern/questionnaire.lisp b/src/pattern/questionnaire.lisp index d05e8d2..3ae8139 100644 --- a/src/pattern/questionnaire.lisp +++ b/src/pattern/questionnaire.lisp @@ -120,6 +120,14 @@ Example: `((process-choice ,group ,choice)))) (:hr :class (spacing :property "m" :side "y" :size 4))))) +(defun plist-p (lst) + (and (some #'keywordp lst) + (some #'stringp lst))) + +(deftype plist () + '(and list (satisfies plist-p))) + +(declaim (ftype (function (plist) list) split-plist-by-keyword)) (defun split-plist-by-keyword (plist) "Splits a property list (PLIST) into a list of smaller property lists, each starting with a keyword.