62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
const t = require('babel-types');
|
||
|
const generate = require('babel-generator').default;
|
||
|
const camelToDashed = require('../lib/parsers').camelToDashed;
|
||
|
|
||
|
const dashedProperties = fs
|
||
|
.readdirSync(path.resolve(__dirname, '../lib/properties'))
|
||
|
.filter(propertyFile => propertyFile.substr(-3) === '.js')
|
||
|
.map(propertyFile => camelToDashed(propertyFile.replace('.js', '')));
|
||
|
|
||
|
const out_file = fs.createWriteStream(path.resolve(__dirname, '../lib/implementedProperties.js'), {
|
||
|
encoding: 'utf-8',
|
||
|
});
|
||
|
var date_today = new Date();
|
||
|
out_file.write(
|
||
|
"'use strict';\n\n// autogenerated - " +
|
||
|
(date_today.getMonth() + 1 + '/' + date_today.getDate() + '/' + date_today.getFullYear()) +
|
||
|
'\n\n'
|
||
|
);
|
||
|
out_file.write('/*\n *\n * https://www.w3.org/Style/CSS/all-properties.en.html\n */\n\n');
|
||
|
|
||
|
const statements = [];
|
||
|
statements.push(
|
||
|
t.variableDeclaration('var', [
|
||
|
t.variableDeclarator(
|
||
|
t.identifier('implementedProperties'),
|
||
|
t.newExpression(t.identifier('Set'), [])
|
||
|
),
|
||
|
])
|
||
|
);
|
||
|
|
||
|
dashedProperties.forEach(property => {
|
||
|
statements.push(
|
||
|
t.expressionStatement(
|
||
|
t.callExpression(
|
||
|
t.memberExpression(t.identifier('implementedProperties'), t.identifier('add')),
|
||
|
[t.stringLiteral(property)]
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
});
|
||
|
|
||
|
statements.push(
|
||
|
t.expressionStatement(
|
||
|
t.assignmentExpression(
|
||
|
'=',
|
||
|
t.memberExpression(t.identifier('module'), t.identifier('exports')),
|
||
|
t.identifier('implementedProperties')
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
|
||
|
out_file.write(generate(t.program(statements)).code + '\n');
|
||
|
out_file.end(function(err) {
|
||
|
if (err) {
|
||
|
throw err;
|
||
|
}
|
||
|
});
|