Move less JS code into less.js
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
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