gin_lp-1.0.x-dev/postcss-glp-classes-generator/index.js
postcss-glp-classes-generator/index.js
const parser = require('postcss-selector-parser');
const fs = require('fs');
const path = require('path');
module.exports = (opts = { }) => {
return {
postcssPlugin: 'gin_lp_class_names',
generate (root, postcss) {
const ginLbClasses = {}
const nodeItterator = function(sels) {
sels.map(function(sel) {
sel.nodes.forEach((innerNode)=> {
if (innerNode.type === 'class') {
if (innerNode.value.indexOf('glp-') === 0) {
ginLbClasses[innerNode.value] = innerNode.value;
}
}
if (innerNode.type === 'pseudo') {
innerNode.nodes.forEach((pseudoNode)=> {
pseudoNode.nodes.forEach((innerPseudoNode)=> {
if (innerPseudoNode.value.indexOf('glp-') === 0) {
ginLbClasses[innerPseudoNode.value] = innerPseudoNode.value;
}
});
})
}
})
})
}
root.walk((node)=>{
if (node.selectors != null) {
return node.selectors.map(function(selector){
return parser(nodeItterator).process(selector).result
});
}
});
fs.writeFileSync(opts.targetPath, JSON.stringify(Object.keys(ginLbClasses)));
},
}
}
module.exports.postcss = true
