1+ import { Range } from 'vscode-languageserver' ;
2+ import { SyntaxElement } from './vbaSyntaxElements' ;
13
24function 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