preprocess.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. "use strict";
  2. exports.__esModule = true;
  3. function removeCstBlankLine(node) {
  4. switch (node.type) {
  5. case "DOCUMENT":
  6. for (var i = node.contents.length - 1; i >= 0; i--) {
  7. if (node.contents[i].type === "BLANK_LINE") {
  8. node.contents.splice(i, 1);
  9. }
  10. else {
  11. removeCstBlankLine(node.contents[i]);
  12. }
  13. }
  14. for (var i = node.directives.length - 1; i >= 0; i--) {
  15. if (node.directives[i].type === "BLANK_LINE") {
  16. node.directives.splice(i, 1);
  17. }
  18. }
  19. break;
  20. case "FLOW_MAP":
  21. case "FLOW_SEQ":
  22. case "MAP":
  23. case "SEQ":
  24. for (var i = node.items.length - 1; i >= 0; i--) {
  25. var item = node.items[i];
  26. if ("char" in item) {
  27. continue;
  28. }
  29. if (item.type === "BLANK_LINE") {
  30. node.items.splice(i, 1);
  31. }
  32. else {
  33. removeCstBlankLine(item);
  34. }
  35. }
  36. break;
  37. case "MAP_KEY":
  38. case "MAP_VALUE":
  39. case "SEQ_ITEM":
  40. if (node.node) {
  41. removeCstBlankLine(node.node);
  42. }
  43. break;
  44. case "ALIAS":
  45. case "BLANK_LINE":
  46. case "BLOCK_FOLDED":
  47. case "BLOCK_LITERAL":
  48. case "COMMENT":
  49. case "DIRECTIVE":
  50. case "PLAIN":
  51. case "QUOTE_DOUBLE":
  52. case "QUOTE_SINGLE":
  53. break;
  54. // istanbul ignore next
  55. default:
  56. throw new Error("Unexpected node type " + JSON.stringify(node.type));
  57. }
  58. }
  59. exports.removeCstBlankLine = removeCstBlankLine;