Skip to content

Commit 2d5460b

Browse files
committed
Minor things
1 parent 16e98d2 commit 2d5460b

File tree

3 files changed

+34
-41
lines changed

3 files changed

+34
-41
lines changed

lib/parse/postprocess.js

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -486,11 +486,11 @@ function postParseFamilyName(name, node) {
486486
*
487487
* It represents the substitution with the first valid value.
488488
*/
489-
function postParseFirstValid(substitution, node, { parseCSSGrammar }) {
489+
function postParseFirstValid(substitution, node, { parseCSSValue }) {
490490
const { context } = node
491491
const { declaration: { definition } } = context
492492
for (let value of substitution.value) {
493-
if ((value = parseCSSGrammar(value, definition, context))) {
493+
if ((value = parseCSSValue(value, definition, context))) {
494494
return value
495495
}
496496
}
@@ -950,10 +950,10 @@ function postParseMediaFeaturePlain(declaration, node, parser) {
950950
const unprefixed = name.value.replace(/(min|max)-/, '')
951951
const definition = descriptors[getMediaFeatureContextName(context)][unprefixed].value
952952
const list = getInputComponentValuesFromMatch(value, input.data)
953-
const validated = parser.parseCSSValue(list, definition, context)
954-
if (validated) {
955-
validated.types.push('<mf-value>')
956-
declaration.splice(2, 1, validated)
953+
const match = parser.parseCSSGrammar(list, definition, context)
954+
if (match) {
955+
match.types.push('<mf-value>')
956+
declaration.splice(2, 1, match)
957957
return declaration
958958
}
959959
return error(node)
@@ -972,7 +972,7 @@ function postParseMediaFeaturePlain(declaration, node, parser) {
972972
* It represents the range values with the result from parsing them against the
973973
* feature value definition.
974974
*/
975-
function postParseMediaFeatureRange(range, node, { parseCSSValue }) {
975+
function postParseMediaFeatureRange(range, node, { parseCSSGrammar }) {
976976
const { context, input } = node
977977
const name = range.find(value => value.types.at(-1) === '<mf-name>')
978978
const { type, value: definition } = descriptors[getMediaFeatureContextName(context)][name.value]
@@ -981,8 +981,8 @@ function postParseMediaFeatureRange(range, node, { parseCSSValue }) {
981981
}
982982
for (let value of range.splice(0)) {
983983
if (value.types.at(-1) === '<mf-value>') {
984-
const list = getInputComponentValuesFromMatch(value, input.data)
985-
value = parseCSSValue(list, definition, context)
984+
value = getInputComponentValuesFromMatch(value, input.data)
985+
value = parseCSSGrammar(value, definition, context)
986986
if (!value) {
987987
return error(node)
988988
}
@@ -995,7 +995,6 @@ function postParseMediaFeatureRange(range, node, { parseCSSValue }) {
995995

996996
/**
997997
* @param {object[]} list
998-
* @param {Parser} [parser]
999998
* @returns {object[]}
1000999
* @see {@link https://drafts.csswg.org/cssom-1/#parse-a-media-query-list}
10011000
* @see {@link https://drafts.csswg.org/mediaqueries-5/#typedef-media-query-list}
@@ -1251,30 +1250,27 @@ function postParsePseudoClassSelector(selector, node, parser) {
12511250
return selector
12521251
}
12531252
const [colon, pseudo] = selector
1254-
const { name, value } = pseudo
1253+
let { name, value } = pseudo
12551254
// Functional pseudo-class
12561255
if (name) {
1257-
const lowercase = name.toLowerCase()
1258-
const definition = pseudos.classes.functions[lowercase]
1259-
if (definition && isValidPseudoClass(lowercase, node)) {
1260-
const value = parser.parseCSSValue(input.current.value, definition, { ...context, function: node })
1261-
if (value instanceof SyntaxError) {
1262-
return value
1263-
}
1256+
name = name.toLowerCase()
1257+
const definition = pseudos.classes.functions[name]
1258+
if (definition && isValidPseudoClass(name, node)) {
1259+
value = parser.parseCSSGrammar(input.current.value, definition, { ...context, function: node })
12641260
if (value) {
1265-
const fn = { ...pseudo, name: lowercase, value }
1261+
const fn = { ...pseudo, name, value }
12661262
return list([colon, fn], '', ['<pseudo-class-selector>'])
12671263
}
12681264
}
12691265
return error(node)
12701266
}
12711267
// Pseudo-class identifier
1272-
let lowercase = value.toLowerCase()
1273-
if (pseudos.classes.aliases.has(lowercase)) {
1274-
lowercase = pseudos.classes.aliases.get(lowercase)
1268+
value = value.toLowerCase()
1269+
if (pseudos.classes.aliases.has(value)) {
1270+
value = pseudos.classes.aliases.get(value)
12751271
}
1276-
if (pseudos.classes.identifiers.includes(lowercase) && isValidPseudoClass(lowercase, node)) {
1277-
const identifier = { ...pseudo, value: lowercase }
1272+
if (pseudos.classes.identifiers.includes(value) && isValidPseudoClass(value, node)) {
1273+
const identifier = { ...pseudo, value }
12781274
return list([colon, identifier], '', ['<pseudo-class-selector>'])
12791275
}
12801276
return null
@@ -1315,36 +1311,33 @@ function isValidPseudoElement(key, node) {
13151311
* It represents a legacy pseudo-element as a non-legacy pseudo-element.
13161312
*/
13171313
function postParsePseudoElementSelector(selector, node, parser) {
1314+
const { context, input } = node
13181315
if (selector.types.includes('<legacy-pseudo-element-selector>')) {
13191316
const [colon, pseudo] = selector
13201317
const pseudoClass = list([colon, pseudo], '', ['<pseudo-class-selector>'])
13211318
selector = list([colon, pseudoClass], '', ['<pseudo-element-selector>'])
13221319
}
13231320
const [, [colon, pseudo]] = selector
1324-
const { name, value } = pseudo
1325-
const { context, input } = node
1321+
let { name, value } = pseudo
13261322
// Functional pseudo-element
13271323
if (name) {
1328-
const lowercase = name.toLowerCase()
1329-
const definition = pseudos.elements.functions[lowercase]
1330-
if (definition && isValidPseudoElement(lowercase, node)) {
1331-
const value = parser.parseCSSValue(input.current.value, definition.value, { ...context, function: node })
1332-
if (value instanceof SyntaxError) {
1333-
return value
1334-
}
1324+
name = name.toLowerCase()
1325+
const definition = pseudos.elements.functions[name]
1326+
if (definition && isValidPseudoElement(name, node)) {
1327+
value = parser.parseCSSGrammar(input.current.value, definition.value, { ...context, function: node })
13351328
if (value) {
1336-
const fn = { ...pseudo, name: lowercase, value }
1329+
const fn = { ...pseudo, name, value }
13371330
const pseudoClass = list([colon, fn], '', ['<pseudo-class-selector>'])
13381331
return list([colon, pseudoClass], '', ['<pseudo-element-selector>'])
13391332
}
13401333
}
13411334
return error(node)
13421335
}
13431336
// Pseudo-element identifier
1344-
const lowercase = value.toLowerCase()
1345-
const isDefined = pseudos.elements.identifiers[lowercase] ?? (lowercase.startsWith('-webkit-') && !context.strict)
1346-
if (isDefined && isValidPseudoElement(lowercase, node)) {
1347-
const identifier = { ...pseudo, value: lowercase }
1337+
value = value.toLowerCase()
1338+
const isDefined = pseudos.elements.identifiers[value] ?? (value.startsWith('-webkit-') && !context.strict)
1339+
if (isDefined && isValidPseudoElement(value, node)) {
1340+
const identifier = { ...pseudo, value }
13481341
const pseudoClass = list([colon, identifier], '', ['<pseudo-class-selector>'])
13491342
return list([colon, pseudoClass], '', ['<pseudo-element-selector>'])
13501343
}
@@ -1558,7 +1551,7 @@ function postParseSyntax(syntax, node) {
15581551
* the CSS value definition syntax.
15591552
*/
15601553
function postParseSyntaxString(syntax, node, parser) {
1561-
return parser.parseCSSGrammar(syntax.value, '<syntax>', node.context) ?? error(node)
1554+
return parser.parseCSSValue(syntax.value, '<syntax>', node.context) ?? error(node)
15621555
}
15631556

15641557
/**

lib/parse/replace.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ function resolveColorChannelDefinition(node) {
109109
const { context: { trees } } = node
110110
// Find the deepest tree whose context is a color function
111111
for (let index = trees.length; 0 < index; --index) {
112-
const { [index - 1]: { context: { replaced, function: fn } }} = trees
112+
const { [index - 1]: { context: { replaced, function: fn } } } = trees
113113
if (fn) {
114114
const { definition: { name } } = fn
115115
// Ignore trees of numeric substitution functions and their arguments

lib/serialize.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const whiteSpace = require('./values/white-space.js')
2020
// UAs must support at least 20 repetitions
2121
const MAX_REPETITIONS = 20
2222

23-
const sRGBColorFunctions = ['hex-color', 'hsl', 'hsla', 'hwb', 'rgb', 'rgba']
23+
const sRGBColorFunctions = ['hsl', 'hsla', 'hwb', 'rgb', 'rgba']
2424

2525
/**
2626
* @param {object} alpha

0 commit comments

Comments
 (0)