aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@vitest/utils/dist/offset.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/@vitest/utils/dist/offset.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/@vitest/utils/dist/offset.js')
-rw-r--r--vanilla/node_modules/@vitest/utils/dist/offset.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/vanilla/node_modules/@vitest/utils/dist/offset.js b/vanilla/node_modules/@vitest/utils/dist/offset.js
new file mode 100644
index 0000000..d8cb08d
--- /dev/null
+++ b/vanilla/node_modules/@vitest/utils/dist/offset.js
@@ -0,0 +1,32 @@
+const lineSplitRE = /\r?\n/;
+function positionToOffset(source, lineNumber, columnNumber) {
+ const lines = source.split(lineSplitRE);
+ const nl = /\r\n/.test(source) ? 2 : 1;
+ let start = 0;
+ if (lineNumber > lines.length) {
+ return source.length;
+ }
+ for (let i = 0; i < lineNumber - 1; i++) {
+ start += lines[i].length + nl;
+ }
+ return start + columnNumber;
+}
+function offsetToLineNumber(source, offset) {
+ if (offset > source.length) {
+ throw new Error(`offset is longer than source length! offset ${offset} > length ${source.length}`);
+ }
+ const lines = source.split(lineSplitRE);
+ const nl = /\r\n/.test(source) ? 2 : 1;
+ let counted = 0;
+ let line = 0;
+ for (; line < lines.length; line++) {
+ const lineLength = lines[line].length + nl;
+ if (counted + lineLength >= offset) {
+ break;
+ }
+ counted += lineLength;
+ }
+ return line + 1;
+}
+
+export { lineSplitRE, offsetToLineNumber, positionToOffset };