Parser no longer requires environment

This commit is contained in:
Luke Page
2014-09-04 18:42:00 +01:00
parent a46de448a3
commit 9d230623d2
4 changed files with 18 additions and 12 deletions

View File

@@ -1,5 +1,7 @@
var contexts = require("./contexts.js");
var getImportManager = module.exports = function(environment, env, Parser) {
var contexts = require("./contexts.js"),
Parser = require('./parser/parser.js');
var getImportManager = module.exports = function(environment, env) {
var rootFilename = env && env.filename;
return {
paths: env.paths || [], // Search paths, when importing
@@ -9,6 +11,11 @@ var getImportManager = module.exports = function(environment, env, Parser) {
contentsIgnoredChars: env.contentsIgnoredChars, // lines inserted, not in the original less
mime: env.mime, // MIME type of .less files
error: null, // Error in parsing/evaluating an import
getAbsolutePath: function(env, filename) {
// proxy needed for "DebugInfo"
// I hope one day we can remove this function
return environment.getAbsolutePath(env, filename);
},
push: function (path, currentFileInfo, importOptions, callback) {
var parserImports = this;
this.queue.push(path);
@@ -68,7 +75,7 @@ var getImportManager = module.exports = function(environment, env, Parser) {
if (importOptions.inline) {
fileParsedFunc(null, contents, resolvedFilename);
} else {
new(Parser)(newEnv, getImportManager(environment, env, Parser)).parse(contents, function (e, root) {
new(Parser)(newEnv, getImportManager(environment, env)).parse(contents, function (e, root) {
fileParsedFunc(e, root, resolvedFilename);
});
}

View File

@@ -4,12 +4,12 @@ module.exports = function(environment) {
data: require('./data/index.js'),
tree: require('./tree/index.js'),
visitor: require('./visitor/index.js'),
Parser: require('./parser/parser.js')(environment),
Parser: require('./parser/parser.js'),
functions: require('./functions/index.js')(environment),
contexts: require("./contexts.js"),
environment: environment
};
less.render = require("./render.js")(less.Parser, environment);
less.render = require("./render.js")(environment);
return less;
};

View File

@@ -4,7 +4,6 @@ var LessError = require('../less-error.js'),
getParserInput = require("./parser-input.js"),
utils = require("../utils.js");
module.exports = function(environment) {
//
// less.js - parser
//
@@ -74,7 +73,7 @@ var Parser = function Parser(env, imports) {
function getDebugInfo(index) {
var filename = env.currentFileInfo.filename;
filename = environment.getAbsolutePath(env, filename);
filename = imports.getAbsolutePath(env, filename);
return {
lineNumber: utils.getLocation(index, parserInput.getInput()).line + 1,
@@ -1589,5 +1588,4 @@ Parser.serializeVars = function(vars) {
return s;
};
return Parser;
};
module.exports = Parser;

View File

@@ -1,8 +1,9 @@
var PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise,
contexts = require("./contexts.js"),
getImportManager = require("./imports.js");
getImportManager = require("./imports.js"),
Parser = require('./parser/parser.js');
var render = function(Parser, environment) {
var render = function(environment) {
var ParseTree = require("./parse-tree.js")(environment);
return function (input, options, callback) {
options = options || {};
@@ -22,7 +23,7 @@ var render = function(Parser, environment) {
});
} else {
var env = new contexts.parseEnv(options),
imports = getImportManager(environment, env, Parser);
imports = getImportManager(environment, env);
var parser = new(Parser)(env, imports);