Hash :
160d346b
Author :
Thomas de Grivel
Date :
2017-06-21T11:12:40
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
;;
;; RoL-assets - Asset pipeline
;;
;; Copyright 2012-2015 Thomas de Grivel <thomas@lowh.net>
;;
;; Permission to use, copy, modify, and distribute this software for any
;; purpose with or without fee is hereby granted, provided that the above
;; copyright notice and this permission notice appear in all copies.
;;
;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
;; WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
;; MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
;; ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
;; WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
;; ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
;; OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
;;
(in-package :RoL-assets)
;; Misc
(defun empty-p (string)
(or (null string)
(not (cl-ppcre:scan "\\S" string))))
(eval-when (:compile-toplevel :load-toplevel)
(let ((cache-nil (gensym "CACHE-NIL-")))
(defmacro cache-1 ((test key) &body body)
"Cache one value of BODY. TEST identifies KEY is cached."
(let ((cache (gensym "CACHE-")))
`(let ((,cache (load-time-value (cons ',cache-nil nil))))
(if (,test (car ,cache) ,key)
(cdr ,cache)
(setf (car ,cache) ,key
(cdr ,cache) (progn ,@body))))))))
;; Log messages
(defvar *msg-indent* 0)
(defmacro with-msg-indent ((level) &body body)
`(let ((*msg-indent* (+ ,level *msg-indent*)))
,@body))
(defun msg (fmt &rest args)
(let ((*standard-output* *error-output*))
(fresh-line)
(dotimes (i *msg-indent*)
(write-char #\Space))
(apply #'format t fmt args)
(fresh-line)
(force-output)))
(defun debug-msg (fmt &rest args)
(when (debug-p :assets)
(apply #'msg fmt args)))