react-style-proptype
Version:
validates style objects by ensuring they only have valid keys
36 lines (31 loc) • 1.28 kB
JavaScript
var fs = require('fs');
var superagent = require('superagent');
var cheerio = require('cheerio');
var url = 'https://developer.mozilla.org/en-US/docs/Web/CSS/Reference';
superagent.get(url)
.end((err, res) => {
var $ = cheerio.load(res.text);
var listItems = $('#wikiArticle .index li a');
var names = [].slice.call(listItems)
.map((x) => x.children[0].children[0].data)
.filter((x) => /^[a-z-]+$/.test(x))
var camel = names.map((x) => x.split('-').map((a, i) => i === 0 ? a : a[0].toUpperCase() + a.slice(1)).join(''));
camel.push('fontSize', 'flex', 'fr', 'overflowScrolling', 'userSelect');
var uniq = [];
camel.forEach((x) => {
if (uniq.indexOf(x) === -1) {
uniq.push(x);
}
});
fs.writeFileSync('data/allCamel.json', JSON.stringify(uniq, null, 2));
var prefixed = camel.map((name) => {
var upper = name[0].toUpperCase() + name.slice(1);
var items = [name, 'Moz' + upper, 'Webkit' + upper, 'MS' + upper, 'O' + upper];
if (name === 'transform') {
items[3] = 'msTransform';
}
return items;
}).reduce((xs, x) => xs.concat(x), []);
console.log('// GENERATED DO NOT EDIT');
console.log('module.exports = ' + JSON.stringify(prefixed, null, 2));
});