'use strict';

var fs = require('fs');
var path = require('path');

var camelToDashed = require('../lib/parsers').camelToDashed;

var property_files = fs.readdirSync(path.resolve(__dirname, '../lib/properties'));
var out_file = fs.createWriteStream(path.resolve(__dirname, '../lib/properties.js'), {encoding: 'utf-8'});

out_file.write('\'use strict\';\n\n// autogenerated\n\n');
out_file.write('/*\n *\n * http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSS2Properties\n */\n\n');
out_file.write('module.exports = function (prototype) {\n');

property_files.forEach(function (property) {
    var dashed;
    if (property.substr(-3) === '.js') {
        property = path.basename(property, '.js');
        dashed = camelToDashed(property);
        out_file.write('    var '+property+' = require(\'./properties/' + property + '\').definition;\n');
        out_file.write('    Object.defineProperty(prototype, \'' + property + '\', '+property+')\n');
        if (property !== dashed) {
            out_file.write('    Object.defineProperty(prototype, \'' + dashed + '\', '+property+')\n');
        }
    }
});

out_file.write('};\n');
out_file.end(function (err) {
    if (err) {
        throw err;
    }
});
