getPreviousNonSharedLineCommentNode.mjs 824 B

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