From 02374d56911b5ebf0862b29b7e2ef148161e27df Mon Sep 17 00:00:00 2001 From: Felix Gnass Date: Wed, 14 Nov 2012 16:13:58 +0100 Subject: [PATCH 1/2] Make sass-debug-info compatible with DevTools In order to make the debug info compatible with Chrome's built-in experimental Sass support: 1) The filename must be a file:// URL 2) The path must be escaped rather than quoted --- lib/less/tree.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/less/tree.js b/lib/less/tree.js index 7038ecc49..134adbdf4 100644 --- a/lib/less/tree.js +++ b/lib/less/tree.js @@ -23,7 +23,9 @@ tree.debugInfo.asComment = function(ctx) { }; tree.debugInfo.asMediaQuery = function(ctx) { - return '@media -sass-debug-info{filename{font-family:"' + ctx.debugInfo.fileName + '";}line{font-family:"' + ctx.debugInfo.lineNumber + '";}}\n'; + return '@media -sass-debug-info{filename{font-family:' + + ('file://' + ctx.debugInfo.fileName).replace(/[\/:.]/g, '\\$&') + + '}line{font-family:\\00003' + ctx.debugInfo.lineNumber + '}}\n'; }; tree.find = function (obj, fun) { From a5c96a4315524dd370147fc1bd4036a99a8c60ba Mon Sep 17 00:00:00 2001 From: Felix Gnass Date: Wed, 14 Nov 2012 16:32:31 +0100 Subject: [PATCH 2/2] Test for escaped paths --- test/css/debug/linenumbers-all.css | 16 ++++++++-------- test/css/debug/linenumbers-mediaquery.css | 16 ++++++++-------- test/less-test.js | 9 +++++++-- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/test/css/debug/linenumbers-all.css b/test/css/debug/linenumbers-all.css index 2c64e57a5..c6fb355b3 100644 --- a/test/css/debug/linenumbers-all.css +++ b/test/css/debug/linenumbers-all.css @@ -1,43 +1,43 @@ @charset "UTF-8"; /* line 3, {pathimport}test.less */ -@media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"3";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000033}} /* @charset "ISO-8859-1"; */ /* line 23, {pathimport}test.less */ -@media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"23";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\0000323}} .tst3 { color: grey; } /* line 15, {path}linenumbers.less */ -@media -sass-debug-info{filename{font-family:"{path}linenumbers.less";}line{font-family:"15";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathesc}linenumbers\.less}line{font-family:\0000315}} .test1 { color: black; } /* line 6, {path}linenumbers.less */ -@media -sass-debug-info{filename{font-family:"{path}linenumbers.less";}line{font-family:"6";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathesc}linenumbers\.less}line{font-family:\000036}} .test2 { color: red; } @media all { /* line 5, {pathimport}test.less */ - @media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"5";}} + @media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000035}} .tst { color: black; } } @media all and screen { /* line 7, {pathimport}test.less */ - @media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"7";}} + @media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000037}} .tst { color: red; } /* line 9, {pathimport}test.less */ - @media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"9";}} + @media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000039}} .tst .tst3 { color: white; } } /* line 18, {pathimport}test.less */ -@media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"18";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\0000318}} .tst2 { color: white; } diff --git a/test/css/debug/linenumbers-mediaquery.css b/test/css/debug/linenumbers-mediaquery.css index c238bddf6..3fdbbafcb 100644 --- a/test/css/debug/linenumbers-mediaquery.css +++ b/test/css/debug/linenumbers-mediaquery.css @@ -1,35 +1,35 @@ @charset "UTF-8"; -@media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"3";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000033}} /* @charset "ISO-8859-1"; */ -@media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"23";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\0000323}} .tst3 { color: grey; } -@media -sass-debug-info{filename{font-family:"{path}linenumbers.less";}line{font-family:"15";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathesc}linenumbers\.less}line{font-family:\0000315}} .test1 { color: black; } -@media -sass-debug-info{filename{font-family:"{path}linenumbers.less";}line{font-family:"6";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathesc}linenumbers\.less}line{font-family:\000036}} .test2 { color: red; } @media all { - @media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"5";}} + @media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000035}} .tst { color: black; } } @media all and screen { - @media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"7";}} + @media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000037}} .tst { color: red; } - @media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"9";}} + @media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\000039}} .tst .tst3 { color: white; } } -@media -sass-debug-info{filename{font-family:"{pathimport}test.less";}line{font-family:"18";}} +@media -sass-debug-info{filename{font-family:file\:\/\/{pathimportesc}test\.less}line{font-family:\0000318}} .tst2 { color: white; } diff --git a/test/less-test.js b/test/less-test.js index 55041684b..56eae3cf8 100644 --- a/test/less-test.js +++ b/test/less-test.js @@ -59,8 +59,13 @@ runTestSet({dumpLineNumbers: 'all'}, "debug/", null, function(name) { return name + '-all'; }); function globalReplacements(input, directory) { - return input.replace(/\{path\}/g, path.join(process.cwd(), directory)) - .replace(/\{pathimport\}/g, path.join(process.cwd(), directory + "import/")) + var p = path.join(process.cwd(), directory); + var pesc = p.replace(/[.:\/]/g, '\\$&'); + + return input.replace(/\{path\}/g, p) + .replace(/\{pathesc\}/g, pesc) + .replace(/\{pathimport\}/g, p+"import/") + .replace(/\{pathimportesc\}/g, pesc + "import\\/") .replace(/\r\n/g, '\n'); }