Skip to content

Commit fb05091

Browse files
committed
convert rule size counting
1 parent 925adff commit fb05091

File tree

1 file changed

+13
-29
lines changed

1 file changed

+13
-29
lines changed

src/index.ts

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,6 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
240240
}
241241
//#endregion
242242

243-
let complexity = 1
244-
245243
if (node.prelude === null) {
246244
if (str_equals('layer', node.name)) {
247245
// @layer without a prelude is anonymous
@@ -291,11 +289,8 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
291289
registeredProperties.p(node.prelude, wallaceLoc(node))
292290
}
293291
}
294-
295-
// atRuleComplexities.push(complexity)
296292
} else if (node.type_name === 'Rule') {
297293
totalRules++
298-
ruleNesting.push(depth)
299294

300295
// Check if rule is empty (no declarations in block)
301296
if (node.block && node.block.is_empty) {
@@ -305,13 +300,14 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
305300
// Count selectors and declarations in this rule
306301
let numSelectors = 0
307302
let numDeclarations = 0
303+
let loc = wallaceLoc(node)
308304

309305
// Find the SelectorList child and count Selector nodes inside it
310306
if (node.children && Array.isArray(node.children)) {
311307
for (const child of node.children) {
312308
if (child.type_name === 'SelectorList') {
313309
// Count Selector nodes inside the SelectorList
314-
if (child.children && Array.isArray(child.children)) {
310+
if (Array.isArray(child.children)) {
315311
for (const selector of child.children) {
316312
if (selector.type_name === 'Selector') {
317313
numSelectors++
@@ -323,7 +319,7 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
323319
}
324320

325321
// Count declarations in the block
326-
if (node.block && node.block.children && Array.isArray(node.block.children)) {
322+
if (node.block && Array.isArray(node.block.children)) {
327323
for (const child of node.block.children) {
328324
if (child.type_name === 'Declaration') {
329325
numDeclarations++
@@ -333,8 +329,16 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
333329

334330
// Track rule metrics
335331
ruleSizes.push(numSelectors + numDeclarations)
332+
uniqueRuleSize.p(numSelectors + numDeclarations, loc)
333+
336334
selectorsPerRule.push(numSelectors)
335+
uniqueSelectorsPerRule.p(numSelectors, loc)
336+
337337
declarationsPerRule.push(numDeclarations)
338+
uniqueDeclarationsPerRule.p(numDeclarations, loc)
339+
340+
ruleNesting.push(depth)
341+
uniqueRuleNesting.p(depth, loc)
338342
} else if (node.type_name === 'Selector') {
339343
selectorNesting.push(depth > 0 ? depth - 1 : 0)
340344
} else if (node.type_name === 'Declaration') {
@@ -406,18 +410,17 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
406410
if (node.prelude !== null) {
407411
let prelude = node.prelude
408412
let preludeStr = prelude && stringifyNode(node.prelude)
409-
let loc = prelude.loc!
410413

411414
if (atRuleName === 'media') {
412415
if (isMediaBrowserhack(prelude)) {
413-
mediaBrowserhacks.p(preludeStr, loc)
416+
mediaBrowserhacks.p(preludeStr, prelude.loc!)
414417
complexity++
415418
}
416419
} else if (atRuleName === 'supports') {
417420
// TODO: analyze vendor prefixes in @supports
418421
// TODO: analyze complexity of @supports 'declaration'
419422
if (isSupportsBrowserhack(prelude)) {
420-
supportsBrowserhacks.p(preludeStr, loc)
423+
supportsBrowserhacks.p(preludeStr, prelude.loc!)
421424
complexity++
422425
}
423426
} else if (endsWith('keyframes', atRuleName)) {
@@ -439,25 +442,6 @@ function analyzeInternal<T extends boolean>(css: string, options: Options, useLo
439442
mediaFeatures.p(node.name, node.loc)
440443
break
441444
}
442-
case Rule: {
443-
let prelude = node.prelude as SelectorList
444-
let block = node.block
445-
446-
let preludeChildren = prelude.children
447-
let blockChildren = block.children
448-
let numSelectors = preludeChildren ? preludeChildren.size : 0
449-
let numDeclarations = blockChildren ? blockChildren.size : 0
450-
451-
// ruleSizes, selectorsPerRule, declarationsPerRule now tracked by Wallace parser
452-
uniqueRuleSize.p(numSelectors + numDeclarations, node.loc!)
453-
uniqueSelectorsPerRule.p(numSelectors, prelude.loc!)
454-
uniqueDeclarationsPerRule.p(numDeclarations, block.loc!)
455-
// ruleNesting now tracked by Wallace parser
456-
uniqueRuleNesting.p(nestingDepth, node.loc!)
457-
458-
// emptyRules now counted by Wallace parser
459-
break
460-
}
461445
case Selector: {
462446
let selector = stringifyNode(node)
463447
let loc = node.loc!

0 commit comments

Comments
 (0)