use new parser options in the browser

This commit is contained in:
Luke Page
2013-12-21 22:31:51 +00:00
parent cb9dc7445a
commit cc385886e0

View File

@@ -53,7 +53,6 @@ if (dumpLineNumbers) {
var typePattern = /^text\/(x-)?less$/;
var cache = null;
var fileCache = {};
var varsPre = "";
function log(str, level) {
if (less.env == 'development' && typeof(console) !== 'undefined' && less.logLevel >= level) {
@@ -287,7 +286,7 @@ function removeError(path) {
}
}
function loadStyles(newVars) {
function loadStyles(modifyVars) {
var styles = document.getElementsByTagName('style'),
style;
for (var i = 0; i < styles.length; i++) {
@@ -297,14 +296,8 @@ function loadStyles(newVars) {
lessText = style.innerHTML || '';
env.filename = document.location.href.replace(/#.*$/, '');
if (newVars || varsPre) {
if (modifyVars || less.globalVars) {
env.useFileCache = true;
lessText = varsPre + lessText;
if (newVars) {
lessText += "\n" + newVars;
}
}
/*jshint loopfunc:true */
@@ -323,7 +316,7 @@ function loadStyles(newVars) {
}
};
})(style);
new(less.Parser)(env).parse(lessText, callback);
new(less.Parser)(env).parse(lessText, callback, {globalVars: less.globalVars, modifyVars: modifyVars});
}
}
}
@@ -458,7 +451,7 @@ function doXHR(url, type, callback, errback) {
}
}
function loadFile(originalHref, currentFileInfo, callback, env, newVars) {
function loadFile(originalHref, currentFileInfo, callback, env, modifyVars) {
if (currentFileInfo && currentFileInfo.currentDirectory && !/^([a-z-]+:)?\//.test(originalHref)) {
originalHref = currentFileInfo.currentDirectory + originalHref;
@@ -496,9 +489,6 @@ function loadFile(originalHref, currentFileInfo, callback, env, newVars) {
if (env.useFileCache && fileCache[href]) {
try {
var lessText = fileCache[href];
if (newVars) {
lessText += "\n" + newVars;
}
callback(null, lessText, href, newFileInfo, { lastModified: new Date() });
} catch (e) {
callback(e, null, href);
@@ -507,8 +497,6 @@ function loadFile(originalHref, currentFileInfo, callback, env, newVars) {
}
doXHR(href, env.mime, function (data, lastModified) {
data = varsPre + data;
// per file cache
fileCache[href] = data;
@@ -523,12 +511,12 @@ function loadFile(originalHref, currentFileInfo, callback, env, newVars) {
});
}
function loadStyleSheet(sheet, callback, reload, remaining, newVars) {
function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {
var env = new less.tree.parseEnv(less);
env.mime = sheet.type;
if (newVars || varsPre) {
if (modifyVars || less.globalVars) {
env.useFileCache = true;
}
@@ -563,16 +551,16 @@ function loadStyleSheet(sheet, callback, reload, remaining, newVars) {
} catch (e) {
callback(e, null, null, sheet);
}
});
}, {modifyVars: modifyVars, globalVars: less.globalVars});
} else {
callback(e, null, null, sheet, webInfo, path);
}
}, env, newVars);
}, env, modifyVars);
}
function loadStyleSheets(callback, reload, newVars) {
function loadStyleSheets(callback, reload, modifyVars) {
for (var i = 0; i < less.sheets.length; i++) {
loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), newVars);
loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars);
}
}
@@ -640,10 +628,10 @@ for (var i = 0; i < links.length; i++) {
// CSS without reloading less-files
//
less.modifyVars = function(record) {
less.refresh(false, less.Parser.serializeVars(record));
less.refresh(false, record);
};
less.refresh = function (reload, newVars) {
less.refresh = function (reload, modifyVars) {
var startTime, endTime;
startTime = endTime = new Date();
@@ -662,15 +650,11 @@ less.refresh = function (reload, newVars) {
log("css generated in " + (new Date() - startTime) + 'ms', logLevel.info);
}
endTime = new Date();
}, reload, newVars);
}, reload, modifyVars);
loadStyles(newVars);
loadStyles(modifyVars);
};
if (less.globalVars) {
varsPre = less.Parser.serializeVars(less.globalVars) + "\n";
}
less.refreshStyles = loadStyles;
less.Parser.fileLoader = loadFile;