| '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; |
| }; |