Skip to content

Commit 6aa9e69

Browse files
committedFeb 7, 2017
align to last changes in css-tree
1 parent a42433c commit 6aa9e69

File tree

11 files changed

+69
-50
lines changed

11 files changed

+69
-50
lines changed
 

‎lib/compressor/clean/Rule.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@ function cleanUnused(node, usageData) {
44
return node.selector.children.each(function(selector, item, list) {
55
var hasUnused = selector.children.some(function(node) {
66
switch (node.type) {
7-
case 'Class':
7+
case 'ClassSelector':
88
return usageData.classes && !hasOwnProperty.call(usageData.classes, node.name);
99

10-
case 'Id':
10+
case 'IdSelector':
1111
return usageData.ids && !hasOwnProperty.call(usageData.ids, node.name);
1212

13-
case 'Type':
13+
case 'TypeSelector':
1414
// TODO: remove toLowerCase when type selectors will be normalized
15-
return usageData.tags && !hasOwnProperty.call(usageData.tags, node.name.toLowerCase());
15+
// ignore universal selectors
16+
if (node.name.charAt(node.name.length - 1) !== '*') {
17+
return usageData.tags && !hasOwnProperty.call(usageData.tags, node.name.toLowerCase());
18+
}
1619
}
1720
});
1821

‎lib/compressor/clean/Universal.js ‎lib/compressor/clean/TypeSelector.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
// remove useless universal selector
2-
module.exports = function cleanIdentifier(node, item, list) {
2+
module.exports = function cleanType(node, item, list) {
3+
var name = item.data.name;
4+
5+
// check it's a universal selector
6+
if (name.charAt(name.length - 1) !== '*') {
7+
return;
8+
}
9+
310
// remove when universal selector isn't last or before combinator
411
if (item.next !== null && item.next.data.type !== 'Combinator') {
512
list.remove(item);

‎lib/compressor/clean/index.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
var walk = require('css-tree').walkUp;
22
var handlers = {
3-
Space: require('./Space.js'),
4-
Atrule: require('./Atrule.js'),
5-
Rule: require('./Rule.js'),
6-
Declaration: require('./Declaration.js'),
7-
Universal: require('./Universal.js'),
8-
Comment: require('./Comment.js')
3+
Space: require('./Space'),
4+
Atrule: require('./Atrule'),
5+
Rule: require('./Rule'),
6+
Declaration: require('./Declaration'),
7+
TypeSelector: require('./TypeSelector'),
8+
Comment: require('./Comment')
99
};
1010

1111
module.exports = function(ast, usageData) {

‎lib/compressor/compress/atrule/keyframes.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ module.exports = function(node) {
44
simpleselector.children.each(function(data, item) {
55
if (data.type === 'Percentage' && data.value === '100') {
66
item.data = {
7-
type: 'Type',
7+
type: 'TypeSelector',
88
loc: data.loc,
99
name: 'to'
1010
};
11-
} else if (data.type === 'Type' && data.name === 'from') {
11+
} else if (data.type === 'TypeSelector' && data.name === 'from') {
1212
item.data = {
1313
type: 'Percentage',
1414
loc: data.loc,

‎lib/compressor/compress/color.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,8 @@ function compressFunction(node, item, list) {
416416
var next = item.next;
417417
if (next && next.data.type !== 'Space') {
418418
list.insert(list.createItem({
419-
type: 'Space'
419+
type: 'Space',
420+
value: ' '
420421
}), next);
421422
}
422423

‎lib/compressor/compress/index.js

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
var walk = require('css-tree').walkUp;
22
var handlers = {
3-
Atrule: require('./Atrule.js'),
4-
Attribute: require('./Attribute.js'),
5-
Value: require('./Value.js'),
6-
Dimension: require('./Dimension.js'),
7-
Percentage: require('./Number.js'),
8-
Number: require('./Number.js'),
9-
String: require('./String.js'),
10-
Url: require('./Url.js'),
11-
Hash: require('./color.js').compressHex,
12-
Identifier: require('./color.js').compressIdent,
13-
Function: require('./color.js').compressFunction
3+
Atrule: require('./Atrule'),
4+
AttributeSelector: require('./AttributeSelector'),
5+
Value: require('./Value'),
6+
Dimension: require('./Dimension'),
7+
Percentage: require('./Number'),
8+
Number: require('./Number'),
9+
String: require('./String'),
10+
Url: require('./Url'),
11+
Hash: require('./color').compressHex,
12+
Identifier: require('./color').compressIdent,
13+
Function: require('./color').compressFunction
1414
};
1515

1616
module.exports = function(ast) {

‎lib/compressor/compress/property/background.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ module.exports = function compressBackground(node) {
2020
value: '0'
2121
},
2222
{
23-
type: 'Space'
23+
type: 'Space',
24+
value: ' '
2425
},
2526
{
2627
type: 'Number',

‎lib/compressor/restructure/4-restructShorthand.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -296,14 +296,14 @@ TRBL.prototype.getValue = function() {
296296

297297
for (var i = 0; i < values.length; i++) {
298298
if (i) {
299-
result.appendData({ type: 'Space' });
299+
result.appendData({ type: 'Space', value: ' ' });
300300
}
301301

302302
result.appendData(values[i].node);
303303
}
304304

305305
if (this.iehack) {
306-
result.appendData({ type: 'Space' });
306+
result.appendData({ type: 'Space', value: ' ' });
307307
result.appendData({
308308
type: 'Identifier',
309309
loc: null,

‎lib/compressor/restructure/prepare/processSelector.js

+16-16
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module.exports = function freeze(node, usageData) {
2828

2929
simpleSelector.children.some(function(node) {
3030
switch (node.type) {
31-
case 'Class':
31+
case 'ClassSelector':
3232
if (usageData && usageData.scopes) {
3333
var classScope = usageData.scopes[node.name] || 0;
3434

@@ -40,36 +40,36 @@ module.exports = function freeze(node, usageData) {
4040
}
4141
break;
4242

43-
case 'PseudoClass':
44-
if (!nonFreezePseudoClasses.hasOwnProperty(node.name)) {
45-
pseudos[node.name] = true;
43+
case 'PseudoClassSelector':
44+
var name = node.name.toLowerCase();
45+
46+
if (!nonFreezePseudoClasses.hasOwnProperty(name)) {
47+
pseudos[name] = true;
4648
hasPseudo = true;
4749
}
4850
break;
4951

50-
case 'PseudoElement':
51-
if (!nonFreezePseudoElements.hasOwnProperty(node.name)) {
52-
pseudos[node.name] = true;
52+
case 'PseudoElementSelector':
53+
var name = node.name.toLowerCase();
54+
55+
if (!nonFreezePseudoElements.hasOwnProperty(name)) {
56+
pseudos[name] = true;
5357
hasPseudo = true;
5458
}
5559
break;
5660

57-
case 'Negation':
58-
pseudos.not = true;
59-
hasPseudo = true;
60-
break;
61-
62-
case 'Type':
63-
tagName = node.name;
61+
case 'TypeSelector':
62+
tagName = node.name.toLowerCase();
6463
break;
6564

66-
case 'Attribute':
65+
case 'AttributeSelector':
6766
if (node.flags) {
68-
pseudos['[' + node.flags + ']'] = true;
67+
pseudos['[' + node.flags.toLowerCase() + ']'] = true;
6968
hasPseudo = true;
7069
}
7170
break;
7271

72+
case 'Space':
7373
case 'Combinator':
7474
tagName = '*';
7575
break;

‎lib/compressor/restructure/prepare/specificity.js

+13-6
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ module.exports = function specificity(simpleSelector) {
1010
node.children.each(walk);
1111
break;
1212

13-
case 'Id':
13+
case 'IdSelector':
1414
A++;
1515
break;
1616

17-
case 'Class':
18-
case 'Attribute':
17+
case 'ClassSelector':
18+
case 'AttributeSelector':
1919
B++;
2020
break;
2121

22-
case 'PseudoClass':
22+
case 'PseudoClassSelector':
2323
switch (node.name.toLowerCase()) {
2424
case 'not':
2525
node.children.each(walk);
@@ -39,10 +39,17 @@ module.exports = function specificity(simpleSelector) {
3939
}
4040
break;
4141

42-
case 'Type':
43-
case 'PseudoElement':
42+
case 'PseudoElementSelector':
4443
C++;
4544
break;
45+
46+
case 'TypeSelector':
47+
// ignore universal selector
48+
if (node.name.charAt(node.name.length - 1) !== '*') {
49+
C++;
50+
}
51+
break;
52+
4653
}
4754
});
4855

0 commit comments

Comments
 (0)
Please sign in to comment.