Skip to content

Commit 177f533

Browse files
committed
new helpers
1 parent 83f15b2 commit 177f533

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

server/src/utils/helpers.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { Range } from 'vscode-languageserver';
2+
import { SyntaxElement } from './vbaSyntaxElements';
13

24
function indexOfNearestUnder(arr: Array<number>, n: number) {
35
if (arr.length === 0) { return -1; }
@@ -28,4 +30,27 @@ function groupIndex(reExec: RegExpExecArray, i: number) {
2830
return reExec.index + reExec[0].indexOf(reExec[i]);
2931
}
3032

31-
export { stripQuotes, indexOfNearestUnder, getMatchIndices};
33+
function rangeIsChildOfElement(tr: Range, element: SyntaxElement): boolean {
34+
const pr = element.range;
35+
36+
const psl = pr.start.line;
37+
const psc = pr.start.character;
38+
const tsl = tr.start.line;
39+
const tsc = tr.start.character;
40+
41+
const pel = pr.end.line;
42+
const pec = pr.end.character;
43+
const tel = tr.end.line;
44+
const tec = tr.end.character;
45+
46+
const prStartEarlier = (psl < tsl) || (psl === tsl && psc <= tsc);
47+
const prEndsAfter = (pel > tel) || (pel === tel && pec >= tec);
48+
49+
return prStartEarlier && prEndsAfter;
50+
}
51+
52+
function sleep(ms: number): Promise<unknown> {
53+
return new Promise(resolve => setTimeout(resolve, ms) );
54+
}
55+
56+
export { stripQuotes, indexOfNearestUnder, getMatchIndices, rangeIsChildOfElement, sleep};

0 commit comments

Comments
 (0)