forked from enviPath/enviPy
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
var PromiseConstructor;
|
|
|
|
module.exports = function(environment, ParseTree, ImportManager) {
|
|
var render = function (input, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
|
|
if (!callback) {
|
|
if (!PromiseConstructor) {
|
|
PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise;
|
|
}
|
|
var self = this;
|
|
return new PromiseConstructor(function (resolve, reject) {
|
|
render.call(self, input, options, function(err, output) {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(output);
|
|
}
|
|
});
|
|
});
|
|
} else {
|
|
this.parse(input, options, function(err, root, imports, options) {
|
|
if (err) { return callback(err); }
|
|
|
|
var result;
|
|
try {
|
|
var parseTree = new ParseTree(root, imports);
|
|
result = parseTree.toCSS(options);
|
|
}
|
|
catch (err) { return callback(err); }
|
|
|
|
callback(null, result);
|
|
});
|
|
}
|
|
};
|
|
|
|
return render;
|
|
};
|