mirror of
https://github.com/less/less.js.git
synced 2026-01-21 05:08:10 -05:00
move import manager creation out of parser
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
var contexts = require("../contexts.js");
|
||||
module.exports = function(environment, env, Parser) {
|
||||
var contexts = require("./contexts.js");
|
||||
var getImportManager = module.exports = function(environment, env, Parser) {
|
||||
var rootFilename = env && env.filename;
|
||||
return {
|
||||
paths: env.paths || [], // Search paths, when importing
|
||||
@@ -68,9 +68,9 @@ module.exports = function(environment, env, Parser) {
|
||||
if (importOptions.inline) {
|
||||
fileParsedFunc(null, contents, resolvedFilename);
|
||||
} else {
|
||||
new(Parser)(newEnv).parse(contents, function (e, root) {
|
||||
new(Parser)(newEnv, getImportManager(environment, env, Parser)).parse(contents, function (e, root) {
|
||||
fileParsedFunc(e, root, resolvedFilename);
|
||||
}, null, true);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -9,7 +9,7 @@ module.exports = function(environment) {
|
||||
contexts: require("./contexts.js"),
|
||||
environment: environment
|
||||
};
|
||||
less.render = require("./render.js")(less.Parser);
|
||||
less.render = require("./render.js")(less.Parser, environment);
|
||||
|
||||
return less;
|
||||
};
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
var LessError = require('../less-error.js'),
|
||||
tree = require("../tree/index.js"),
|
||||
visitor = require("../visitor/index.js"),
|
||||
getImportManager = require("./imports.js"),
|
||||
getParserInput = require("./parser-input.js"),
|
||||
utils = require("../utils.js");
|
||||
|
||||
module.exports = function(environment) {
|
||||
var ParseTree = require("../parse-tree.js")(environment);
|
||||
//
|
||||
// less.js - parser
|
||||
//
|
||||
@@ -40,12 +38,10 @@ module.exports = function(environment) {
|
||||
// It also takes care of moving all the indices forwards.
|
||||
//
|
||||
//
|
||||
var Parser = function Parser(env) {
|
||||
var Parser = function Parser(env, imports) {
|
||||
var parsers,
|
||||
parserInput = getParserInput();
|
||||
|
||||
var imports = getImportManager(environment, env, Parser);
|
||||
|
||||
function expect(arg, msg, index) {
|
||||
// some older browsers return typeof 'function' for RegExp
|
||||
var result = (Object.prototype.toString.call(arg) === '[object Function]') ? arg.call(parsers) : parserInput.$(arg);
|
||||
@@ -97,7 +93,7 @@ var Parser = function Parser(env) {
|
||||
// @param callback call `callback` when done.
|
||||
// @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply
|
||||
//
|
||||
parse: function (str, callback, additionalData, returnSubParseTree) {
|
||||
parse: function (str, callback, additionalData) {
|
||||
var root, error = null, globalVars, modifyVars, preText = "";
|
||||
|
||||
globalVars = (additionalData && additionalData.globalVars) ? Parser.serializeVars(additionalData.globalVars) + '\n' : '';
|
||||
@@ -170,8 +166,7 @@ var Parser = function Parser(env) {
|
||||
return callback(e);
|
||||
}
|
||||
else {
|
||||
return callback(null,
|
||||
returnSubParseTree ? root : new ParseTree(root, imports));
|
||||
return callback(null, root);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
var PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise,
|
||||
contexts = require("./contexts.js");
|
||||
contexts = require("./contexts.js"),
|
||||
getImportManager = require("./imports.js");
|
||||
|
||||
var render = function(Parser) {
|
||||
var render = function(Parser, environment) {
|
||||
var ParseTree = require("./parse-tree.js")(environment);
|
||||
return function (input, options, callback) {
|
||||
options = options || {};
|
||||
|
||||
@@ -19,14 +21,18 @@ var render = function(Parser) {
|
||||
callback(error);
|
||||
});
|
||||
} else {
|
||||
var env = new contexts.parseEnv(options);
|
||||
var env = new contexts.parseEnv(options),
|
||||
imports = getImportManager(environment, env, Parser);
|
||||
|
||||
var parser = new(Parser)(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 { resolve(root.toCSS(options)); }
|
||||
try {
|
||||
var parseTree = new ParseTree(root, imports);
|
||||
resolve(parseTree.toCSS(options));
|
||||
}
|
||||
catch (err) { reject( err); }
|
||||
}, options);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user