less-openui5
Version:
Build OpenUI5 themes with Less.js
38 lines (29 loc) • 1.01 kB
JavaScript
/* eslint-disable new-cap */
;
const less = require("../thirdparty/less");
const createFileLoader = require("./fileLoader");
const createImportsPushFunction = require("./importsPush");
function parserFactory(env, fileLoader) {
// Make sure that provided "env" is an instance
if (!(env instanceof less.tree.parseEnv)) {
env = new less.tree.parseEnv(env);
}
const parser = new less.Parser(env);
if (fileLoader) {
patchParserImportsPush(parser, env, fileLoader);
}
return parser;
}
function patchParserImportsPush(parser, env, fileLoader) {
// Hooks into the parser to be able to use custom file loader and use custom
// parser factory for imports
parser.imports.push = createImportsPushFunction(env, fileLoader, parserFactory);
}
module.exports = function createParser(env, fileHandler) {
// Create fileLoader function if a fileHandler is provided
let fileLoader;
if (fileHandler) {
fileLoader = createFileLoader(fileHandler);
}
return parserFactory(env, fileLoader);
};