Sha256: 2c52319b36bdc749984e8e522393da35d90cf53bf8c7a0495817fe2a5135025f
Contents?: true
Size: 1.32 KB
Versions: 24
Compression:
Stored size: 1.32 KB
Contents
'use strict'; const { isComment, hasSource } = require('./typeGuards'); /** * @param {import('postcss').Node} statement * @returns {boolean} */ module.exports = function (statement) { const parentNode = statement.parent; if (parentNode === undefined || parentNode.type === 'root') { return false; } if (statement === parentNode.first) { return true; } /* * Search for the statement in the parent's nodes, ignoring comment * nodes on the same line as the parent's opening brace. */ const parentNodes = parentNode.nodes; if (!parentNodes) { return false; } const firstNode = parentNodes[0]; if ( !isComment(firstNode) || (typeof firstNode.raws.before === 'string' && firstNode.raws.before.includes('\n')) ) { return false; } if (!hasSource(firstNode) || !firstNode.source.start) { return false; } const openingBraceLine = firstNode.source.start.line; if (!firstNode.source.end || openingBraceLine !== firstNode.source.end.line) { return false; } for (let i = 1; i < parentNodes.length; i++) { const node = parentNodes[i]; if (node === statement) { return true; } if ( !isComment(node) || (hasSource(node) && node.source.end && node.source.end.line !== openingBraceLine) ) { return false; } } /* istanbul ignore next: Should always return in the loop */ return false; };
Version data entries
24 entries across 24 versions & 1 rubygems