getNextNonSharedLineCommentNode.js 713 B

123456789101112131415161718192021222324252627282930313233343536
  1. 'use strict';
  2. /** @typedef {import('postcss').Node} Node */
  3. /**
  4. * @param {Node | void} node
  5. */
  6. function getNodeLine(node) {
  7. return node && node.source && node.source.start && node.source.start.line;
  8. }
  9. /**
  10. * @param {Node | void} node
  11. * @returns {Node | void}
  12. */
  13. module.exports = function getNextNonSharedLineCommentNode(node) {
  14. if (node === undefined) {
  15. return undefined;
  16. }
  17. /** @type {Node | void} */
  18. const nextNode = node.next();
  19. if (!nextNode || nextNode.type !== 'comment') {
  20. return nextNode;
  21. }
  22. if (
  23. getNodeLine(node) === getNodeLine(nextNode) ||
  24. getNodeLine(nextNode) === getNodeLine(nextNode.next())
  25. ) {
  26. return getNextNonSharedLineCommentNode(nextNode);
  27. }
  28. return nextNode;
  29. };