mirror of
https://github.com/less/less.js.git
synced 2026-01-24 14:48:00 -05:00
44 lines
1.4 KiB
JavaScript
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;
|