X-Git-Url: http://git.kpe.io/?p=lml2.git;a=blobdiff_plain;f=files.lisp;h=068347c9f83ecd7d38ca14f7eec213fe5b735077;hp=db1a9b1827d2d76a33865d8fd4288cf8a9aa4d00;hb=90a1a084ef0d15eccc7c433d1a3787c9408b3f82;hpb=859dd81b9398101f2e2c468e2c165d64254eb78a diff --git a/files.lisp b/files.lisp index db1a9b1..068347c 100644 --- a/files.lisp +++ b/files.lisp @@ -28,23 +28,23 @@ (unless (position #\. f) (setq f (concatenate 'string f ".html")))) (if (or (and (eq type :source) *sources-dir*) - (and (eq type :output) *output-dir*)) + (and (eq type :output) *output-dir*)) (merge-pathnames (make-pathname :name (pathname-name f) - :type (pathname-type f) - :directory (pathname-directory f)) + :type (pathname-type f) + :directory (pathname-directory f)) (ecase type - (:source *sources-dir*) - (:output *output-dir*))) + (:source *sources-dir*) + (:output *output-dir*))) (if (stringp f) - (parse-namestring f) - f))) + (parse-namestring f) + f))) (defmacro with-dir ((output &key sources) &body body) (let ((output-dir (gensym)) - (sources-dir (gensym))) + (sources-dir (gensym))) `(let ((,output-dir ,output) - (,sources-dir ,sources)) + (,sources-dir ,sources)) (when (stringp ,output-dir) (setq ,output-dir (parse-namestring ,output-dir))) (when (stringp ,sources-dir) @@ -52,29 +52,30 @@ (unless ,sources-dir (setq ,sources-dir ,output-dir)) (let ((*output-dir* ,output-dir) - (*sources-dir* ,sources-dir)) + (*sources-dir* ,sources-dir)) ,@body)))) -(defun lml-load-path (file) +(defun lml-load-path (file &key optional) (if (probe-file file) (with-open-file (in file :direction :input) (do ((form (read in nil 'eof) (read in nil 'eof))) - ((eq form 'eof)) - (eval form))) - (format *trace-output* "Warning: unable to load LML file ~S" file))) + ((eq form 'eof)) + (eval form))) + (unless optional + (format *trace-output* "Warning: unable to load LML file ~S" file)))) (defun process-dir (dir &key sources) (with-dir (dir :sources sources) (let ((lml-files (directory - (make-pathname :defaults *sources-dir* - :name :wild - :type "lml")))) + (make-pathname :defaults *sources-dir* + :name :wild + :type "lml")))) (dolist (file lml-files) - (format *trace-output* "~&; Processing ~A~%" file) - (lml-load-path file))))) + (format *trace-output* "~&; Processing ~A~%" file) + (lml-load-path file))))) -(defun lml-load (file) - (lml-load-path (eval `(lml-file-name ,file :source)))) +(defun lml-load (file &key optional) + (lml-load-path (eval `(lml-file-name ,file :source)) :optional optional)) (defun insert-file (file) (print-file-contents file *html-stream*))