mirror of
https://github.com/OliveTin/OliveTin
synced 2025-12-18 03:55:32 +00:00
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
// NOTICE: This file is generated by Rollup. To modify it,
|
|
// please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
|
|
'use strict';
|
|
|
|
const typeGuards = require('./typeGuards.cjs');
|
|
const getNextNonSharedLineCommentNode = require('./getNextNonSharedLineCommentNode.cjs');
|
|
const getPreviousNonSharedLineCommentNode = require('./getPreviousNonSharedLineCommentNode.cjs');
|
|
|
|
/** @typedef {import('postcss').Node} PostcssNode */
|
|
|
|
/**
|
|
* @param {PostcssNode | void} a
|
|
* @param {PostcssNode | void} b
|
|
*/
|
|
function nodesShareLines(a, b) {
|
|
const endLine = a && a.source && a.source.end && a.source.end.line;
|
|
const startLine = b && b.source && b.source.start && b.source.start.line;
|
|
|
|
return endLine === startLine;
|
|
}
|
|
|
|
/**
|
|
* @param {PostcssNode} node
|
|
* @returns {boolean}
|
|
*/
|
|
function isSharedLineComment(node) {
|
|
if (!typeGuards.isComment(node)) {
|
|
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 &&
|
|
!typeGuards.isRoot(parentNode) &&
|
|
parentNode.index(node) === 0 &&
|
|
node.raws.before !== undefined &&
|
|
!node.raws.before.includes('\n')
|
|
) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
module.exports = isSharedLineComment;
|