| /** @import { Node as PostcssNode } from 'postcss' */ |
| import { isAtRule } from './typeGuards.mjs'; |
| |
| /** |
| * Adjust the text in EditInfo to include a semicolon when needed. |
| * |
| * @param {PostcssNode} node |
| * @param {{range: [number, number], text: string}} fixData |
| * @returns {{range: [number, number], text: string}} |
| */ |
| export default function addSemicolonForEditInfo(node, fixData) { |
| const { parent } = node; |
| |
| if (!parent) return fixData; |
| |
| if (node.type === 'decl') { |
| if (parent.raws.semicolon || parent.last !== node) { |
| return { |
| ...fixData, |
| text: `${fixData.text};`, |
| }; |
| } |
| } |
| |
| if (isAtRule(node)) { |
| if (!node.nodes && (parent.raws.semicolon || parent.last !== node)) { |
| return { |
| ...fixData, |
| text: `${fixData.text};`, |
| }; |
| } |
| } |
| |
| return fixData; |
| } |