generate_valid_properties.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. const fs = require("fs");
  3. const path = require("path");
  4. const t = require("babel-types");
  5. const generate = require("babel-generator").default;
  6. const camelToDashed = require("../lib/parsers").camelToDashed;
  7. const dahsedProperties = fs
  8. .readdirSync(path.resolve(__dirname, "../lib/properties"))
  9. .filter(propertyFile => propertyFile.substr(-3) === ".js")
  10. .map(propertyFile => camelToDashed(propertyFile.replace('.js', '')))
  11. const valid_properties_out_file = fs.createWriteStream(
  12. path.resolve(__dirname, "../lib/validProperties.js"),
  13. { encoding: "utf-8" }
  14. );
  15. valid_properties_out_file.write("'use strict';\n\n// autogenerated\n\n");
  16. valid_properties_out_file.write('/*\n *\n * http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSS2Properties\n */\n\n');
  17. const validPropertiesStatements = [];
  18. validPropertiesStatements.push(
  19. t.variableDeclaration("var", [
  20. t.variableDeclarator(
  21. t.identifier("validProperties"),
  22. t.newExpression(t.identifier("Set"), [])
  23. )
  24. ])
  25. );
  26. dahsedProperties.forEach(property => {
  27. validPropertiesStatements.push(
  28. t.expressionStatement(
  29. t.callExpression(
  30. t.memberExpression(
  31. t.identifier("validProperties"),
  32. t.identifier("add")
  33. ),
  34. [t.stringLiteral(property)]
  35. )
  36. )
  37. );
  38. });
  39. validPropertiesStatements.push(
  40. t.expressionStatement(
  41. t.assignmentExpression(
  42. "=",
  43. t.memberExpression(t.identifier("module"), t.identifier("exports")),
  44. t.identifier("validProperties")
  45. )
  46. )
  47. );
  48. valid_properties_out_file.write(
  49. generate(t.program(validPropertiesStatements)).code + "\n"
  50. );
  51. valid_properties_out_file.end(function(err) {
  52. if (err) {
  53. throw err;
  54. }
  55. });