Files
less.js/lib/less/render.js
2014-09-04 18:42:00 +01:00

44 lines
1.4 KiB
JavaScript

var PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise,
contexts = require("./contexts.js"),
getImportManager = require("./imports.js"),
Parser = require('./parser/parser.js');
var render = function(environment) {
var ParseTree = require("./parse-tree.js")(environment);
return function (input, options, callback) {
options = options || {};
if (typeof(options) === 'function') {
callback = options;
options = {};
}
if (callback) {
render(input.options)
.then(function(css) {
callback(null, css);
},
function(error) {
callback(error);
});
} else {
var env = new contexts.parseEnv(options),
imports = getImportManager(environment, env);
var parser = new(Parser)(env, imports);
return new PromiseConstructor(function (resolve, reject) {
parser.parse(input, function (e, root) {
if (e) { return reject(e); }
try {
var parseTree = new ParseTree(root, imports);
resolve(parseTree.toCSS(options));
}
catch (err) { reject( err); }
}, options);
});
}
};
};
module.exports = render;