You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

88 lines
3.6 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var contexts_1 = tslib_1.__importDefault(require("./contexts"));
var parser_1 = tslib_1.__importDefault(require("./parser/parser"));
var plugin_manager_1 = tslib_1.__importDefault(require("./plugin-manager"));
var less_error_1 = tslib_1.__importDefault(require("./less-error"));
var utils = tslib_1.__importStar(require("./utils"));
function default_1(environment, ParseTree, ImportManager) {
var parse = function (input, options, callback) {
if (typeof options === 'function') {
callback = options;
options = utils.copyOptions(this.options, {});
}
else {
options = utils.copyOptions(this.options, options || {});
}
if (!callback) {
var self_1 = this;
return new Promise(function (resolve, reject) {
parse.call(self_1, input, options, function (err, output) {
if (err) {
reject(err);
}
else {
resolve(output);
}
});
});
}
else {
var context_1;
var rootFileInfo = void 0;
var pluginManager_1 = new plugin_manager_1.default(this, !options.reUsePluginManager);
options.pluginManager = pluginManager_1;
context_1 = new contexts_1.default.Parse(options);
if (options.rootFileInfo) {
rootFileInfo = options.rootFileInfo;
}
else {
var filename = options.filename || 'input';
var entryPath = filename.replace(/[^\/\\]*$/, '');
rootFileInfo = {
filename: filename,
rewriteUrls: context_1.rewriteUrls,
rootpath: context_1.rootpath || '',
currentDirectory: entryPath,
entryPath: entryPath,
rootFilename: filename
};
// add in a missing trailing slash
if (rootFileInfo.rootpath && rootFileInfo.rootpath.slice(-1) !== '/') {
rootFileInfo.rootpath += '/';
}
}
var imports_1 = new ImportManager(this, context_1, rootFileInfo);
this.importManager = imports_1;
// TODO: allow the plugins to be just a list of paths or names
// Do an async plugin queue like lessc
if (options.plugins) {
options.plugins.forEach(function (plugin) {
var evalResult, contents;
if (plugin.fileContent) {
contents = plugin.fileContent.replace(/^\uFEFF/, '');
evalResult = pluginManager_1.Loader.evalPlugin(contents, context_1, imports_1, plugin.options, plugin.filename);
if (evalResult instanceof less_error_1.default) {
return callback(evalResult);
}
}
else {
pluginManager_1.addPlugin(plugin);
}
});
}
new parser_1.default(context_1, imports_1, rootFileInfo)
.parse(input, function (e, root) {
if (e) {
return callback(e);
}
callback(null, root, imports_1, options);
}, options);
}
};
return parse;
}
exports.default = default_1;
;
//# sourceMappingURL=parse.js.map