class.lisp
32 lines
| 1.3 KiB
| text/x-common-lisp
|
CommonLispLexer
/ src / class.lisp
r11 | ||||
(in-package sugar-qsp) | ||||
(eval-when (:compile-toplevel :load-toplevel :execute) | ||||
(defun src-file (filename) | ||||
(uiop/pathname:merge-pathnames* | ||||
filename | ||||
(asdf:system-source-directory :sugar-qsp))) | ||||
r23 | (defun read-code-from-string (string) | |||
(with-input-from-string (in string) | ||||
r25 | (let ((*package* *package*)) | |||
`(progn | ||||
,@(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))))) | ||||
r23 | (defun load-src (filename) | |||
(alexandria:read-file-into-string (src-file filename)))) | ||||
r11 | ||||
(defclass compiler () | ||||
r23 | ((body :accessor body :initform #.(load-src "extras/body.html")) | |||
(css :accessor css :initform (list #.(load-src "extras/default.css"))) | ||||
r25 | (js :accessor js :initform (reverse | |||
(list | ||||
'#.(read-code-from-string (load-src "src/main.ps")) | ||||
'#.(read-code-from-string (load-src "src/api.ps")) | ||||
'#.(read-code-from-string (load-src "src/intrinsics.ps"))))) | ||||
r11 | (compile :accessor compile-only :initarg :compile) | |||
(target :accessor target :initarg :target) | ||||
(beautify :accessor beautify :initarg :beautify))) | ||||