Commit 4350f89c36dd91d76aa6b0b579fb6ac27ba5379e

Thomas de Grivel 2013-11-04T09:36:02

allow compiling to stream

diff --git a/precompile/precompile.lisp b/precompile/precompile.lisp
index 49c64bc..6e81251 100644
--- a/precompile/precompile.lisp
+++ b/precompile/precompile.lisp
@@ -29,6 +29,49 @@
     (copy-files path output :replace t :update t)
     nil))
 
+(defmethod compile-asset ((asset preprocessed-asset) (output stream))
+  (let ((assets (preprocess-asset asset)))
+    (cond
+      ((find :assets *debug*)
+       (format output "var triangle_include = (function() {
+	var includes = [];
+	var head = document.getElementsByTagName('head')[0];
+	var inc = function () {
+		if (includes.length == 0) return;
+		var s = document.createElement('script');
+		s.type = 'text/javascript';
+		s.onreadystatechange = function () {
+			if (this.readyState == 'complete') inc();
+		}
+		s.onload = inc;
+		s.src = includes.pop();
+		console.log('triangle include ', s.src);
+		head.appendChild(s);
+
+	};
+	var f = function () { console.log('done loading includes'); };
+	return function (x) {
+		if (x === true) {
+			includes.reverse();
+			inc();
+		} else {
+			includes.push(x);
+		}
+	};
+})();
+")
+       (dolist (a assets)
+	 (msg "P ~A" (asset-source-path a))
+	 (cond ((eq asset a) (process-asset a output))
+	       (t (include-asset a output)
+		  (copy-files (asset-source-path a)
+			      (asset-path a)
+			      :replace t :update t))))
+       (format output "triangle_include(true);~%"))
+      (t (dolist (a assets)
+	   (msg "P ~A" (asset-source-path a))
+	   (process-asset a output))))))
+
 (defmethod compile-asset ((asset preprocessed-asset) (output pathname))
   (ensure-directories-exist output)
   (let ((assets (preprocess-asset asset)))
@@ -38,18 +81,7 @@
 					  output))
 		    assets))
       (with-output-to-file/utf-8 (out output)
-	(cond
-	  ((find :assets *debug*)
-	   (dolist (a assets)
-	     (msg "P ~A" (asset-source-path a))
-	     (if (eq asset a)
-		 (process-asset a out)
-		 (progn (include-asset a out)
-			(copy-files (asset-source-path a)
-				    (asset-path a))))))
-	  (t (dolist (a assets)
-	       (msg "P ~A" (asset-source-path a))
-	       (process-asset a out))))))))
+	(compile-asset asset out)))))
 
 ;;  Precompile