mirror of https://github.com/webpack/webpack.git
refactor: code
This commit is contained in:
parent
7fd36f908e
commit
94fa19ad68
|
@ -428,6 +428,49 @@ class CssParser extends Parser {
|
|||
const eatNameInVar = eatUntil(",)};/");
|
||||
walkCssTokens(source, {
|
||||
isSelector: () => isNextRulePrelude,
|
||||
leftCurlyBracket: (input, start, end) => {
|
||||
switch (scope) {
|
||||
case CSS_MODE_TOP_LEVEL: {
|
||||
allowImportAtRule = false;
|
||||
scope = CSS_MODE_IN_BLOCK;
|
||||
blockNestingLevel = 1;
|
||||
|
||||
if (isModules) {
|
||||
isNextRulePrelude = isNextNestedSyntax(input, end);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case CSS_MODE_IN_BLOCK: {
|
||||
blockNestingLevel++;
|
||||
isNextRulePrelude = isNextNestedSyntax(input, end);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return end;
|
||||
},
|
||||
rightCurlyBracket: (input, start, end) => {
|
||||
switch (scope) {
|
||||
case CSS_MODE_IN_BLOCK: {
|
||||
if (isLocalMode()) {
|
||||
processDeclarationValueDone(input);
|
||||
inAnimationProperty = false;
|
||||
}
|
||||
if (--blockNestingLevel === 0) {
|
||||
scope = CSS_MODE_TOP_LEVEL;
|
||||
isNextRulePrelude = true;
|
||||
|
||||
if (isModules) {
|
||||
modeData = undefined;
|
||||
}
|
||||
} else {
|
||||
isNextRulePrelude = isNextNestedSyntax(input, end);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return end;
|
||||
},
|
||||
url: (input, start, end, contentStart, contentEnd) => {
|
||||
const value = normalizeUrl(
|
||||
input.slice(contentStart, contentEnd),
|
||||
|
@ -775,49 +818,6 @@ class CssParser extends Parser {
|
|||
}
|
||||
return end;
|
||||
},
|
||||
leftCurlyBracket: (input, start, end) => {
|
||||
switch (scope) {
|
||||
case CSS_MODE_TOP_LEVEL: {
|
||||
allowImportAtRule = false;
|
||||
scope = CSS_MODE_IN_BLOCK;
|
||||
blockNestingLevel = 1;
|
||||
|
||||
if (isModules) {
|
||||
isNextRulePrelude = isNextNestedSyntax(input, end);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case CSS_MODE_IN_BLOCK: {
|
||||
blockNestingLevel++;
|
||||
isNextRulePrelude = isNextNestedSyntax(input, end);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return end;
|
||||
},
|
||||
rightCurlyBracket: (input, start, end) => {
|
||||
switch (scope) {
|
||||
case CSS_MODE_IN_BLOCK: {
|
||||
if (isLocalMode()) {
|
||||
processDeclarationValueDone(input);
|
||||
inAnimationProperty = false;
|
||||
}
|
||||
if (--blockNestingLevel === 0) {
|
||||
scope = CSS_MODE_TOP_LEVEL;
|
||||
isNextRulePrelude = true;
|
||||
|
||||
if (isModules) {
|
||||
modeData = undefined;
|
||||
}
|
||||
} else {
|
||||
isNextRulePrelude = isNextNestedSyntax(input, end);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return end;
|
||||
},
|
||||
identifier: (input, start, end) => {
|
||||
switch (scope) {
|
||||
case CSS_MODE_IN_BLOCK: {
|
||||
|
@ -854,9 +854,10 @@ class CssParser extends Parser {
|
|||
|
||||
return end;
|
||||
},
|
||||
id: (input, start, end) => {
|
||||
if (isLocalMode()) {
|
||||
hash: (input, start, end, isID) => {
|
||||
if (isLocalMode() && isNextRulePrelude && isID) {
|
||||
const name = input.slice(start + 1, end);
|
||||
console.log(name);
|
||||
const dep = new CssLocalIdentifierDependency(name, [start + 1, end]);
|
||||
const { line: sl, column: sc } = locConverter.get(start);
|
||||
const { line: el, column: ec } = locConverter.get(end);
|
||||
|
|
|
@ -9,20 +9,20 @@
|
|||
* @typedef {object} CssTokenCallbacks
|
||||
* @property {function(string, number): boolean=} isSelector
|
||||
* @property {function(string, number, number, number, number): number=} url
|
||||
* @property {function(string, number, number): number=} string
|
||||
* @property {function(string, number, number): number=} leftParenthesis
|
||||
* @property {function(string, number, number): number=} rightParenthesis
|
||||
* @property {function(string, number, number): number=} pseudoFunction
|
||||
* @property {function(string, number, number): number=} function
|
||||
* @property {function(string, number, number): number=} pseudoClass
|
||||
* @property {function(string, number, number): number=} atKeyword
|
||||
* @property {function(string, number, number): number=} class
|
||||
* @property {function(string, number, number): number=} identifier
|
||||
* @property {function(string, number, number): number=} id
|
||||
* @property {function(string, number, number): number=} leftCurlyBracket
|
||||
* @property {function(string, number, number): number=} rightCurlyBracket
|
||||
* @property {function(string, number, number): number=} semicolon
|
||||
* @property {function(string, number, number): number=} comma
|
||||
* @property {(function(string, number, number): number)=} string
|
||||
* @property {(function(string, number, number): number)=} leftParenthesis
|
||||
* @property {(function(string, number, number): number)=} rightParenthesis
|
||||
* @property {(function(string, number, number): number)=} pseudoFunction
|
||||
* @property {(function(string, number, number): number)=} function
|
||||
* @property {(function(string, number, number): number)=} pseudoClass
|
||||
* @property {(function(string, number, number): number)=} atKeyword
|
||||
* @property {(function(string, number, number): number)=} class
|
||||
* @property {(function(string, number, number): number)=} identifier
|
||||
* @property {(function(string, number, number, boolean): number)=} hash
|
||||
* @property {(function(string, number, number): number)=} leftCurlyBracket
|
||||
* @property {(function(string, number, number): number)=} rightCurlyBracket
|
||||
* @property {(function(string, number, number): number)=} semicolon
|
||||
* @property {(function(string, number, number): number)=} comma
|
||||
*/
|
||||
|
||||
/** @typedef {function(string, number, CssTokenCallbacks): number} CharHandler */
|
||||
|
@ -484,13 +484,8 @@ const consumeNumberSign = (input, pos, callbacks) => {
|
|||
|
||||
pos = _consumeAnIdentSequence(input, pos, callbacks);
|
||||
|
||||
if (
|
||||
isId &&
|
||||
callbacks.isSelector &&
|
||||
callbacks.isSelector(input, pos) &&
|
||||
callbacks.id !== undefined
|
||||
) {
|
||||
return callbacks.id(input, start, pos);
|
||||
if (callbacks.hash !== undefined) {
|
||||
return callbacks.hash(input, start, pos, isId);
|
||||
}
|
||||
|
||||
return pos;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -56,8 +56,8 @@ describe("walkCssTokens", () => {
|
|||
results.push(["identifier", input.slice(s, e)]);
|
||||
return e;
|
||||
},
|
||||
id: (input, s, e) => {
|
||||
results.push(["id", input.slice(s, e)]);
|
||||
hash: (input, s, e, isID) => {
|
||||
results.push(["hash", input.slice(s, e), isID]);
|
||||
return e;
|
||||
},
|
||||
string: (input, s, e) => {
|
||||
|
|
Loading…
Reference in New Issue