Skip to content

Commit fddaad3

Browse files
committed
robustify parsing
1 parent 62ea94f commit fddaad3

File tree

1 file changed

+4
-5
lines changed
  • packages/svelte/src/compiler/phases/1-parse/read

1 file changed

+4
-5
lines changed

packages/svelte/src/compiler/phases/1-parse/read/style.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ const REGEX_PERCENTAGE = /^\d+(\.\d+)?%/;
99
const REGEX_NTH_OF =
1010
/^(even|odd|\+?(\d+|\d*n(\s*[+-]\s*\d+)?)|-\d*n(\s*\+\s*\d+))((?=\s*[,)])|\s+of\s+)/;
1111
const REGEX_WHITESPACE_OR_COLON = /[\s:]/;
12-
const REGEX_BRACE_OR_SEMICOLON = /[{;](?=(?:[^'"]*'[^'"]*')*[^'"]*$)/;
1312
const REGEX_LEADING_HYPHEN_OR_DIGIT = /-?\d/;
1413
const REGEX_VALID_IDENTIFIER_CHAR = /[a-zA-Z0-9_-]/;
1514
const REGEX_COMMENT_CLOSE = /\*\//;
@@ -79,7 +78,7 @@ function read_at_rule(parser) {
7978

8079
const name = read_identifier(parser);
8180

82-
const prelude = parser.read_until(REGEX_BRACE_OR_SEMICOLON).trim();
81+
const prelude = read_value(parser);
8382

8483
/** @type {import('#compiler').Css.Block | null} */
8584
let block = null;
@@ -398,7 +397,7 @@ function read_declaration(parser) {
398397
parser.eat(':');
399398
parser.allow_whitespace();
400399

401-
const value = read_declaration_value(parser);
400+
const value = read_value(parser);
402401

403402
const end = parser.index;
404403

@@ -419,7 +418,7 @@ function read_declaration(parser) {
419418
* @param {import('../index.js').Parser} parser
420419
* @returns {string}
421420
*/
422-
function read_declaration_value(parser) {
421+
function read_value(parser) {
423422
let value = '';
424423
let escaped = false;
425424
let in_url = false;
@@ -443,7 +442,7 @@ function read_declaration_value(parser) {
443442
quote_mark = char;
444443
} else if (char === '(' && value.slice(-3) === 'url') {
445444
in_url = true;
446-
} else if ((char === ';' || char === '}') && !in_url && !quote_mark) {
445+
} else if ((char === ';' || char === '{' || char === '}') && !in_url && !quote_mark) {
447446
return value.trim();
448447
}
449448

0 commit comments

Comments
 (0)