1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 'use strict';
-
- const _ = require('lodash');
- const getNextNonSharedLineCommentNode = require('./getNextNonSharedLineCommentNode');
- const getPreviousNonSharedLineCommentNode = require('./getPreviousNonSharedLineCommentNode');
-
- /** @typedef {import('postcss').Node} PostcssNode */
-
- /**
- *
- * @param {PostcssNode | void} a
- * @param {PostcssNode | void} b
- */
- function nodesShareLines(a, b) {
- return _.get(a, 'source.end.line') === _.get(b, 'source.start.line');
- }
-
- /**
- * @param {PostcssNode} node
- * @returns {boolean}
- */
- module.exports = function isSharedLineComment(node) {
- if (node.type !== 'comment') {
- return false;
- }
-
- const previousNonSharedLineCommentNode = getPreviousNonSharedLineCommentNode(node);
-
- if (nodesShareLines(previousNonSharedLineCommentNode, node)) {
- return true;
- }
-
- const nextNonSharedLineCommentNode = getNextNonSharedLineCommentNode(node);
-
- if (nextNonSharedLineCommentNode && nodesShareLines(node, nextNonSharedLineCommentNode)) {
- return true;
- }
-
- const parentNode = node.parent;
-
- // It's a first child and located on the same line as block start
- if (
- parentNode !== undefined &&
- parentNode.type !== 'root' &&
- parentNode.index(node) === 0 &&
- node.raws.before !== undefined &&
- !node.raws.before.includes('\n')
- ) {
- return true;
- }
-
- return false;
- };
|