Added media query support.

* env.dumpLineNumbers was being lost when doing "offline" compilation
   (within node.js)
 * Added documentation for the changed options
 * --line-numbers now takes a parameter
   (either "comments", "mediaquery" or "all")
 * The system can now again output mediaqueries for FireLESS
 * Moved comments tests in debug/comments, will duplicate
   for mediaquery and for "all"

Everything is still utterly broken though, tests still fail.
This commit is contained in:
Simone Deponti
2012-09-10 13:17:33 +02:00
committed by Luke Page
parent 84908b0038
commit 959e22f5ff
9 changed files with 34 additions and 9 deletions

View File

@@ -75,7 +75,7 @@ args = args.filter(function (arg) {
case 'O1': options.optimization = 1; break;
case 'O2': options.optimization = 2; break;
case 'line-numbers':
options.dumpLineNumbers = true;
options.dumpLineNumbers = match[2];
break;
}
});

View File

@@ -35,8 +35,9 @@ if (less.env === 'development') {
if (/!watch/.test(location.hash)) {
less.watch();
}
if (/!dumpLineNumbers/.test(location.hash)) {
less.dumpLineNumbers = true;
var dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);
if (dumpLineNumbers) {
less.dumpLineNumbers = dumpLineNumbers[1];
}
less.watchTimer = setInterval(function () {
if (less.watchMode) {

View File

@@ -119,7 +119,8 @@ less.Parser.importer = function (file, paths, callback, env) {
new(less.Parser)({
paths: [path.dirname(pathname)].concat(paths),
filename: pathname,
contents: env.contents
contents: env.contents,
dumpLineNumbers: env.dumpLineNumbers
}).parse(data, function (e, root) {
callback(e, root);
});

View File

@@ -41,6 +41,12 @@ var lessc_helper = {
sys.puts(" the number, the less nodes it will create in the");
sys.puts(" tree. This could matter for debugging, or if you");
sys.puts(" want to access the individual nodes in the tree.");
sys.puts(" --line-numbers=TYPE Outputs filename and line numbers.");
sys.puts(" TYPE can be either 'comments', which will output");
sys.puts(" the debug info within comments, 'mediaquery'");
sys.puts(" that will output the information within a fake");
sys.puts(" media query which is compatible with the SASS");
sys.puts(" format, and 'all' which will do both.");
sys.puts("");
sys.puts("Report bugs to: http://github.com/cloudhead/less.js/issues");
sys.puts("Home page: <http://lesscss.org/>");

View File

@@ -133,7 +133,9 @@ tree.Ruleset.prototype = {
rulesets = [], // node.Ruleset instances
paths = [], // Current selectors
selector, // The fully rendered selector
lineNumbersComment, // A comment with line number for debugging.
lineNumbersInfo, // Line number debugging, either as comment or fake media query.
lineNumbersComment, // Line number debug info as comment
lineNumbersMediaQuery, // Line number debug info as media query
rule;
if (! this.root) {
@@ -172,9 +174,24 @@ tree.Ruleset.prototype = {
css.push(rules.join(env.compress ? '' : '\n'));
} else {
if (rules.length > 0) {
lineNumbersComment = "";
if (env.dumpLineNumbers && !env.compress)
lineNumbersInfo = "";
lineNumbersComment = '';
lineNumbersMediaQuery = '';
if (env.dumpLineNumbers && !env.compress) {
lineNumbersComment = '/* line ' + this.sourceLineNumber + ', ' + env.filename + ' */\n';
lineNumbersMediaQuery = '@media -sass-debug-info{filename{font-family:"' + env.filename + '";}line{font-family:"' + this.sourceLineNumber + '";}}\n';
switch(env.dumpLineNumbers) {
case 'comments':
lineNumbersInfo = lineNumbersComment;
break;
case 'mediaquery':
lineNumbersInfo = lineNumbersMediaQuery;
break;
case 'all':
lineNumbersInfo = lineNumbersComment+lineNumbersMediaQuery;
break;
}
}
selector = paths.map(function (p) {
return p.map(function (s) {
return s.toCSS(env);
@@ -189,7 +206,7 @@ tree.Ruleset.prototype = {
}
rules = _rules;
css.push(lineNumbersComment + selector +
css.push(lineNumbersInfo + selector +
(env.compress ? '{' : ' {\n ') +
rules.join(env.compress ? '' : '\n ') +
(env.compress ? '}' : '\n}\n'));

View File

@@ -46,7 +46,7 @@ runTestSet(null, "errors/", function(name, err, compiledLess) {
sys.puts("");
});});
runTestSet({dumpLineNumbers: true}, "debug/");
runTestSet({dumpLineNumbers: 'comments'}, "debug/comments/");
function runTestSet(options, foldername, verifyFunction) {
foldername = foldername || "";