| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // 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';
- /** @import { Node as PostcssNode } from 'postcss' */
- /**
- * Make a fix range as narrow as possible by trimming common prefixes and suffixes
- *
- * @param {PostcssNode} node
- * @param {{range: [number, number], text: string}} fixData
- * @returns {{range: [number, number], text: string}}
- */
- function narrowFixRange(node, fixData) {
- if (!node.source) {
- return fixData;
- }
- let startOffset = fixData.range[0];
- let endOffset = fixData.range[1];
- const stringRepresentation = node.source.input.css.slice(startOffset, endOffset);
- let replacementStartOffset = 0;
- for (let i = 0; i < stringRepresentation.length; i++) {
- const a = stringRepresentation[i];
- const b = fixData.text[i];
- if (a !== b) break;
- startOffset++;
- replacementStartOffset++;
- }
- let replacementEndOffset = fixData.text.length;
- for (let i = 0; i < stringRepresentation.length; i++) {
- const ia = stringRepresentation.length - 1 - i;
- if (ia < replacementStartOffset) break;
- const a = stringRepresentation[ia];
- const ib = fixData.text.length - 1 - i;
- if (ib < replacementStartOffset) break;
- const b = fixData.text[ib];
- if (a !== b) break;
- endOffset--;
- replacementEndOffset--;
- }
- // Try to have a context size of at least 1
- if (startOffset === endOffset) {
- if (startOffset > fixData.range[0]) {
- startOffset--;
- replacementStartOffset--;
- } else if (endOffset < fixData.range[1]) {
- endOffset++;
- replacementEndOffset++;
- }
- }
- return {
- text: fixData.text.slice(replacementStartOffset, replacementEndOffset),
- range: [startOffset, endOffset],
- };
- }
- module.exports = narrowFixRange;
|