Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun thunk-component-args (prefab-spec)
- (flet ((split-body (body)
- (au:partition #'symbolp body :key #'first))
- (thunk-args (args)
- (loop :for (key val) :on args :by #'cddr
- :collect key :collect (lambda () val))))
- (multiple-value-bind (components children) (split-body (rest prefab-spec))
- `(,(first prefab-spec)
- ,@(loop :for (name options . args) :in components
- :collect `(,name ,options ,@(thunk-args args)))
- ,@(mapcar #'thunk-component-args children)))))
- ;;
- (mapcar #'thunk-component-args '(("foo" (foo () :arg (list 42)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement