From 2be812860ba0b1d675c964272fac644c0888301f Mon Sep 17 00:00:00 2001 From: Henrik Vendelbo Date: Fri, 21 Nov 2014 20:32:49 +0100 Subject: [PATCH 1/7] less 2.0 --- lib/wrapper.js | 62 +++++++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/lib/wrapper.js b/lib/wrapper.js index 2864ea8..fe2fc99 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -3,6 +3,7 @@ // Less 'CSS' wrapper for SocketStream 0.3 var fs = require('fs'), + pathlib = require('path'), less = require('less'), _prependedLess; @@ -12,6 +13,32 @@ exports.prependLess = function(prependedLess) { } }; +function errorBodyStyling(path, err) { + //TODO remove ss.root from paths and filename + var r = [ + 'body:before {', + 'display:block;', + 'position:absolute;', + 'top:15px; left:20px; right:20px;', + 'z-index: 10000;', + 'content:"Error compiling LESS file: '+path+' at '+(err.filename||'?')+' '+(err.line||'?')+':'+(err.index||'?')+' '+err.message+'";', + 'border: 1px solid #888;', + 'border-radius: 5px;', + 'background-color: rgba(255,255,255,.5);', + 'background-color: white;', + '}' + ]; + return r.join('\n'); +} + +exports.decidePaths = function decidePaths(path, options) { + + var p = [ pathlib.dirname(path) ]; + //TODO by default we should add the ss.root to paths at end + if (options.paths) p = p.concat(options.paths); + return p; +}; + // root and config are passed as arguments, but are not used // exports.init = function () { @@ -28,26 +55,45 @@ exports.init = function () { compile: function(path, options, cb) { - // Get dir from path to enable @include commmand - var dir = path.split('/'); { dir.pop(); } - var input = fs.readFileSync(path, 'utf8'); var compress = options && options.compress; - var parser = new(less.Parser)({paths: [dir.join('/')], filename: path}); - if(_prependedLess) { input = _prependedLess + '\n' + input; } + var opts = {}; + for(var n in options) opts[n] = options[n]; + opts.paths = exports.decidePaths(path, options); + + console.log('paths', opts.paths); + + less.logger.addListener({ + //TODO passing along log output + debug: function(msg) { + + }, + info: function(msg) { + + }, + warn: function(msg) { + + }, + error: function(msg) { + + } + }); + + //TODO it seems less still blows up on some path errors, is there a way to catch them? - parser.parse(input, function(err, tree) { + less.render(input, opts, function(err, out) { if (err) { console.log('! - Unable to compile Less file %s into CSS', path); console.log(err); + return cb(errorBodyStyling(path, err)); } - var css = tree.toCSS({compress: compress}); - cb(css); + //TODO out.map + cb(out.css); }); } }; diff --git a/package.json b/package.json index 1cfd96b..3ab0754 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "node": ">= 0.10.0" }, "dependencies": { - "less": "1.7.x" + "less": "2.0.x" }, "devDependencies": {} } From 380ec64204225dc62d6b62d251c13ee085fb9542 Mon Sep 17 00:00:00 2001 From: Henrik Vendelbo Date: Fri, 21 Nov 2014 20:38:02 +0100 Subject: [PATCH 2/7] removed debug log --- lib/wrapper.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/wrapper.js b/lib/wrapper.js index fe2fc99..1bfde51 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -66,8 +66,6 @@ exports.init = function () { for(var n in options) opts[n] = options[n]; opts.paths = exports.decidePaths(path, options); - console.log('paths', opts.paths); - less.logger.addListener({ //TODO passing along log output debug: function(msg) { From 2e588842ca7ccfcc9ffb9d02d6624c926db9e42d Mon Sep 17 00:00:00 2001 From: Henrik Vendelbo Date: Fri, 21 Nov 2014 23:51:35 +0100 Subject: [PATCH 3/7] ss-less config --- lib/wrapper.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/wrapper.js b/lib/wrapper.js index 1bfde51..597971a 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -41,7 +41,7 @@ exports.decidePaths = function decidePaths(path, options) { // root and config are passed as arguments, but are not used // -exports.init = function () { +exports.init = function (root,config) { return { @@ -63,8 +63,8 @@ exports.init = function () { input = _prependedLess + '\n' + input; } var opts = {}; - for(var n in options) opts[n] = options[n]; - opts.paths = exports.decidePaths(path, options); + for(var n in config) opts[n] = config[n]; + opts.paths = exports.decidePaths(path, config); less.logger.addListener({ //TODO passing along log output From b8f9c5b0b6196f66d056bb40d1e1f9eb7b69e074 Mon Sep 17 00:00:00 2001 From: Henrik Vendelbo Date: Fri, 21 Nov 2014 23:56:19 +0100 Subject: [PATCH 4/7] compress option --- lib/wrapper.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/wrapper.js b/lib/wrapper.js index 597971a..d6a7a51 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -65,6 +65,7 @@ exports.init = function (root,config) { var opts = {}; for(var n in config) opts[n] = config[n]; opts.paths = exports.decidePaths(path, config); + opts.compress = options.compress; less.logger.addListener({ //TODO passing along log output From dc40058361839c06c361e3f603890ec608a9e2b3 Mon Sep 17 00:00:00 2001 From: Henrik Vendelbo Date: Fri, 21 Nov 2014 23:56:43 +0100 Subject: [PATCH 5/7] filename reporting error --- lib/wrapper.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/wrapper.js b/lib/wrapper.js index d6a7a51..f48e11a 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -13,15 +13,16 @@ exports.prependLess = function(prependedLess) { } }; -function errorBodyStyling(path, err) { - //TODO remove ss.root from paths and filename +function errorBodyStyling(root,path, err) { + path = path.replace(root,''); + var filename = err.filename.replace(root,''); var r = [ 'body:before {', 'display:block;', 'position:absolute;', 'top:15px; left:20px; right:20px;', 'z-index: 10000;', - 'content:"Error compiling LESS file: '+path+' at '+(err.filename||'?')+' '+(err.line||'?')+':'+(err.index||'?')+' '+err.message+'";', + 'content:"Error compiling LESS file: '+path+' at '+(filename||'?')+' '+(err.line||'?')+':'+(err.index||'?')+' '+err.message+'";', 'border: 1px solid #888;', 'border-radius: 5px;', 'background-color: rgba(255,255,255,.5);', @@ -89,7 +90,7 @@ exports.init = function (root,config) { if (err) { console.log('! - Unable to compile Less file %s into CSS', path); console.log(err); - return cb(errorBodyStyling(path, err)); + return cb(errorBodyStyling(root, path, err)); } //TODO out.map cb(out.css); From 752dd66ee60ee7b559386b5442261012df92d895 Mon Sep 17 00:00:00 2001 From: Henrik Vendelbo Date: Sun, 23 Nov 2014 11:44:06 +0100 Subject: [PATCH 6/7] padding for error box --- lib/wrapper.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/wrapper.js b/lib/wrapper.js index f48e11a..1ed1b8d 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -27,6 +27,7 @@ function errorBodyStyling(root,path, err) { 'border-radius: 5px;', 'background-color: rgba(255,255,255,.5);', 'background-color: white;', + 'padding: 10px 15px;', '}' ]; return r.join('\n'); From d2500d166f319f1d50f61200d30cd847745d2235 Mon Sep 17 00:00:00 2001 From: Henrik Vendelbo Date: Sun, 23 Nov 2014 11:44:23 +0100 Subject: [PATCH 7/7] tell less the file name --- lib/wrapper.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/wrapper.js b/lib/wrapper.js index 1ed1b8d..b39c942 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -66,6 +66,7 @@ exports.init = function (root,config) { } var opts = {}; for(var n in config) opts[n] = config[n]; + opts.filename = path; opts.paths = exports.decidePaths(path, config); opts.compress = options.compress;