##// END OF EJS Templates
Fix -o
Fix -o

File last commit:

r58:2f85fb42 default
r70:b03a5f77 tip default
Show More
utils.lisp
51 lines | 1.3 KiB | text/x-common-lisp | CommonLispLexer
(in-package txt2web)
(defvar *delivered* nil)
(defun src-file (filename)
(uiop/pathname:merge-pathnames*
filename
(asdf:system-source-directory :txt2web)))
(defun read-progn-from-string (string)
`(progn
,@(read-code-from-string string)))
(defun read-code-from-string (string)
(with-input-from-string (in string)
(let ((*package* *package*))
(loop :for form := (read in nil :eof)
:until (eq form :eof)
:when (eq (first form) 'cl:in-package)
:do (setf *package* (find-package (second form)))
:else
:collect form))))
(defun load-src (filename)
(alexandria:read-file-into-string (src-file filename) :external-format :utf-8))
;;;; For testing
(defvar *dont-expand* '(setf))
(defun should-expand (form)
(cond ((not (listp form))
nil)
((listp (car form))
t)
((member (car form) *dont-expand*)
nil)
((not (symbolp (car form)))
nil)
((not (eq (symbol-package (car form))
(find-package :parenscript)))
t)))
(defun ps-macroexpand-all (form)
(if (should-expand form)
(let ((form (ps::ps-macroexpand form)))
(if (listp form)
(mapcar #'ps-macroexpand-all form)
form))
form))