index.js 984 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. var ast = require("./ast");
  2. exports.freshElement = ast.freshElement;
  3. exports.nonFreshElement = ast.nonFreshElement;
  4. exports.elementWithTag = ast.elementWithTag;
  5. exports.text = ast.text;
  6. exports.forceWrite = ast.forceWrite;
  7. exports.simplify = require("./simplify");
  8. function write(writer, nodes) {
  9. nodes.forEach(function(node) {
  10. writeNode(writer, node);
  11. });
  12. }
  13. function writeNode(writer, node) {
  14. toStrings[node.type](writer, node);
  15. }
  16. var toStrings = {
  17. element: generateElementString,
  18. text: generateTextString,
  19. forceWrite: function() { }
  20. };
  21. function generateElementString(writer, node) {
  22. if (ast.isVoidElement(node)) {
  23. writer.selfClosing(node.tag.tagName, node.tag.attributes);
  24. } else {
  25. writer.open(node.tag.tagName, node.tag.attributes);
  26. write(writer, node.children);
  27. writer.close(node.tag.tagName);
  28. }
  29. }
  30. function generateTextString(writer, node) {
  31. writer.text(node.value);
  32. }
  33. exports.write = write;