Files
test-repo/tests/config/utils/visualize-range.js
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

34 lines
927 B
JavaScript
Raw Normal View History

2022-01-04 17:00:25 +08:00
import { codeFrameColumns } from "@babel/code-frame";
import indexToPosition from "index-to-position";
const codeFrameColumnsOptions = {
linesAbove: Number.POSITIVE_INFINITY,
linesBelow: Number.POSITIVE_INFINITY,
};
2020-05-28 01:16:52 +08:00
const locationForRange = (text, rangeStart, rangeEnd) => {
2020-11-30 12:29:48 +08:00
if (rangeStart > rangeEnd) {
[rangeStart, rangeEnd] = [rangeEnd, rangeStart];
}
2020-05-28 01:16:52 +08:00
const start = indexToPosition(text, rangeStart, { oneBased: true });
const end = indexToPosition(text, rangeEnd, { oneBased: true });
if (start.line !== end.line) {
end.column -= 1;
2020-05-28 01:16:52 +08:00
}
return {
start,
end,
};
};
const visualizeRange = (text, { rangeStart = 0, rangeEnd = text.length }) =>
codeFrameColumns(
text,
locationForRange(text, rangeStart, rangeEnd),
2020-11-30 12:29:48 +08:00
rangeStart > rangeEnd
? { ...codeFrameColumnsOptions, message: "[Reversed range]" }
: codeFrameColumnsOptions,
2020-05-28 01:16:52 +08:00
);
2022-01-04 17:00:25 +08:00
export default visualizeRange;