prettier-plugin-multiline-arrays
Version:
Prettier plugin to force all arrays to be multiline.
22 lines (21 loc) • 1.12 kB
JavaScript
/** Both line and column in "range" are 0 indexed. */
export function extractTextBetweenRanges(input, range) {
if (range.start.line > range.end.line) {
throw new Error(`Start line "${range.start.line}" cannot be greater than end line "${range.end.line}"`);
}
if (range.start.line === range.end.line) {
if (range.start.column >= range.end.column) {
throw new Error(`When start and end are on the same line, the start column "${range.start.column}" must be less than the end column "${range.end.column}".`);
}
return input[range.start.line]?.slice(range.start.column + 1, range.end.column) ?? '';
}
let extractedText = input[range.start.line]?.slice(range.start.column + 1) ?? '';
extractedText += '\n';
for (let lineIndex = range.start.line + 1; lineIndex < range.end.line; lineIndex++) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
extractedText += input[lineIndex];
extractedText += '\n';
}
extractedText += input[range.end.line]?.slice(0, range.end.column) ?? '';
return extractedText;
}