refactor css comments (#7021)
* refactor css comments * workarounds for postcss-less location bugs * improve replaceQuotesInInlineComments * update changelog * fix comments in selectors * fix comments in values * use \ufffe instead of \0 because that's what these characters are for see http://www.unicode.org/faq/private_use.html#nonchar6 * fix quoted urls Co-authored-by: Georgii Dolzhykov <thorn.mailbox@gmail.com>
This commit is contained in:
1 parent
1ad13d7420
commit
4602bb6b95
11 files changed
+455
-38
No files matched your search
@@ -2,9 +2,9 @@
|
||||
|
||||
const createError = require("../common/parser-create-error");
|
||||
const parseFrontMatter = require("../utils/front-matter");
|
||||
const lineColumnToIndex = require("../utils/line-column-to-index");
|
||||
const { hasPragma } = require("./pragma");
|
||||
const { isLessParser, isSCSS, isSCSSNestedPropertyNode } = require("./utils");
|
||||
const { calculateLoc, replaceQuotesInInlineComments } = require("./loc");
|
||||
|
||||
function parseValueNodes(nodes) {
|
||||
let parenGroup = {
|
||||
@@ -294,7 +294,7 @@ function parseNestedCSS(node, options) {
|
||||
|
||||
value = value.trim();
|
||||
|
||||
node.raws.value = selector;
|
||||
node.raws.value = value;
|
||||
}
|
||||
|
||||
let params = "";
|
||||
@@ -541,6 +541,8 @@ function parseWithParser(parser, text, options) {
|
||||
|
||||
result = parseNestedCSS(addTypePrefix(result, "css-"), options);
|
||||
|
||||
calculateLoc(result, text);
|
||||
|
||||
if (frontMatter) {
|
||||
result.nodes.unshift(frontMatter);
|
||||
}
|
||||
@@ -553,7 +555,12 @@ function requireParser(isSCSSParser) {
|
||||
return require("postcss-scss");
|
||||
}
|
||||
|
||||
return require("postcss-less");
|
||||
const lessParser = require("postcss-less");
|
||||
return {
|
||||
// Workaround for https://github.com/shellscape/postcss-less/issues/145
|
||||
// See comments for `replaceQuotesInInlineComments` in `loc.js`.
|
||||
parse: text => lessParser.parse(replaceQuotesInInlineComments(text))
|
||||
};
|
||||
}
|
||||
|
||||
function parse(text, parsers, options) {
|
||||
@@ -582,17 +589,13 @@ const parser = {
|
||||
hasPragma,
|
||||
locStart(node) {
|
||||
if (node.source) {
|
||||
return lineColumnToIndex(node.source.start, node.source.input.css) - 1;
|
||||
return node.source.startOffset;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
locEnd(node) {
|
||||
const endNode = node.nodes && node.nodes[node.nodes.length - 1];
|
||||
if (endNode && node.source && !node.source.end) {
|
||||
node = endNode;
|
||||
}
|
||||
if (node.source && node.source.end) {
|
||||
return lineColumnToIndex(node.source.end, node.source.input.css);
|
||||
if (node.source) {
|
||||
return node.source.endOffset;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user