forked from FullHuman/purgecss-from-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
36 lines (33 loc) · 1.25 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var changeCase = require('change-case');
var doublePattern = /\$\$\((.?)\)/g;
var singlePattern = /\.(\w.+)/g;
class PurgeFromFrets {
static extract(content) {
var selectors = [];
var doubles = [];
var doubleInProgress;
while ((doubleInProgress = doublePattern.exec(content)) != null) {
doubles.push(...doubleInProgress[1].split('.'));
}
// console.log("Found $$ selectors:" + doubles.join(", "));
selectors.push(...doubles);
var singles = [];
var singlesInProgress;
while ((singlesInProgress = singlePattern.exec(content)) != null) {
singles.push(...singlesInProgress[1].split('.'));
}
selectors.push(...singles);
selectors = selectors.map((x) => {
x = x[0] === '_' ? x.substr(1) : x;
return x.trim().replace(/[^-_a-z0-9]/i, '');
});
selectors = selectors.map((x) => changeCase.paramCase(x));
selectors = selectors.map((x) => x.replace('hover-', 'hover:'));
selectors = selectors.filter(
(x) => !(['base-styles', '', ' '].includes(x) || x.length <= 1)
);
console.log(selectors.join(', '));
return selectors;
}
}
module.exports = PurgeFromFrets;