Commit d850fbef80449c0f3eb17c53d870c6579e1468ec

Thomas de Grivel 2014-07-18T05:32:25

Move less JS code into less.js

diff --git a/less.js b/less.js
new file mode 100644
index 0000000..5a5624a
--- /dev/null
+++ b/less.js
@@ -0,0 +1,32 @@
+var path = require('path');
+var fs = require('fs');
+var less = require('less');
+
+var print_error = function (e) {
+  less.writeError(e);
+  process.exit(2);
+}
+
+try {
+  process.stdin.setEncoding('utf-8');
+  process.stdin.on('readable', function () {
+    var opt = JSON.parse(process.stdin.read());
+
+    var print_tree = function (e, tree) {
+      if (e)
+	print_error(e);
+      var css = tree.toCSS(opt.css);
+      process.stdout.write(css);
+    }
+
+    var parse_data = function (e, data) {
+      if (e)
+	print_error(e);
+      new(less.Parser)(opt.parser).parse(data, print_tree)
+    }
+
+    fs.readFile(path.resolve(process.cwd(), opt.src), 'utf8', parse_data);
+  });
+} catch (e) {
+  print_error(e);
+}
diff --git a/less.lisp b/less.lisp
index 2b4f10d..0dbccac 100644
--- a/less.lisp
+++ b/less.lisp
@@ -24,51 +24,13 @@
   (json:encode-json (namestring object) stream))
 
 (defun less (src-path parser-options css-options &optional out)
-  (let* ((fmt "~
-var path = require('path'),
-    fs = require('fs'),
-    sys = require('util'),
-    os = require('os');
-var less = require('less');
-var src = ~A;
-var parser_opts = ~A;
-var css_opts = ~A;
-
-var print_error = function (e) {
-  less.writeError(e);
-  process.exit(2);
-}
-var print_tree = function (e, tree) {
-  if (e)
-    print_error(e);
-  try {
-    var css = tree.toCSS(css_opts);
-    process.stdout.write(css);
-  } catch (e) {
-    print_error(e);
-  }
-}
-var parse_data = function (e, data) {
-  if (e)
-    print_error(e);
-  try {
-    new(less.Parser)(parser_opts).parse(data, print_tree)
-  } catch (e) {
-    print_error(e);
-  }
-}
-try {
-  fs.readFile(path.resolve(process.cwd(), src), 'utf8', parse_data);
-} catch (e) {
-  print_error(e);
-}
-")
-	 (js (format nil fmt
-		     (json:encode-json-to-string src-path)
-		     (json:encode-json-plist-to-string parser-options)
-		     (json:encode-json-plist-to-string css-options))))
-    #+nil(format *error-output* "~%~A~%" js)
-    (exec-js:from-string js :safely nil :out out)))
+  (let ((opt (json:make-object `((src . ,src-path)
+				 (parser . ,(plist-alist parser-options))
+				 (css . ,(plist-alist css-options)))
+			       nil)))
+    (with-input-from-string (in (json:encode-json-to-string opt))
+      (exec-js:from-file #P"lib/triangle/assets/less.js"
+			 :safely nil :in in :out out))))
 
 ;;  LESS