source: imaps-frontend/node_modules/clean-css/lib/optimizer/level-2/extract-properties.js

main
Last change on this file was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 4 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 1.8 KB
Line 
1// This extractor is used in level 2 optimizations
2// IMPORTANT: Mind Token class and this code is not related!
3// Properties will be tokenized in one step, see #429
4
5var Token = require('../../tokenizer/token');
6var serializeRules = require('../../writer/one-time').rules;
7var serializeValue = require('../../writer/one-time').value;
8
9function extractProperties(token) {
10 var properties = [];
11 var inSpecificSelector;
12 var property;
13 var name;
14 var value;
15 var i, l;
16
17 if (token[0] == Token.RULE) {
18 inSpecificSelector = !/[.+>~]/.test(serializeRules(token[1]));
19
20 for (i = 0, l = token[2].length; i < l; i++) {
21 property = token[2][i];
22
23 if (property[0] != Token.PROPERTY) { continue; }
24
25 name = property[1][1];
26 if (name.length === 0) { continue; }
27
28 value = serializeValue(property, i);
29
30 properties.push([
31 name,
32 value,
33 findNameRoot(name),
34 token[2][i],
35 name + ':' + value,
36 token[1],
37 inSpecificSelector
38 ]);
39 }
40 } else if (token[0] == Token.NESTED_BLOCK) {
41 for (i = 0, l = token[2].length; i < l; i++) {
42 properties = properties.concat(extractProperties(token[2][i]));
43 }
44 }
45
46 return properties;
47}
48
49function findNameRoot(name) {
50 if (name == 'list-style') { return name; }
51 if (name.indexOf('-radius') > 0) { return 'border-radius'; }
52 if (name == 'border-collapse' || name == 'border-spacing' || name == 'border-image') { return name; }
53 if (name.indexOf('border-') === 0 && /^border-\w+-\w+$/.test(name)) { return name.match(/border-\w+/)[0]; }
54 if (name.indexOf('border-') === 0 && /^border-\w+$/.test(name)) { return 'border'; }
55 if (name.indexOf('text-') === 0) { return name; }
56 if (name == '-chrome-') { return name; }
57
58 return name.replace(/^-\w+-/, '').match(/([a-zA-Z]+)/)[0].toLowerCase();
59}
60
61module.exports = extractProperties;
Note: See TracBrowser for help on using the repository browser.