UNPKG

2.97 kBJavaScriptView Raw
1/* --------------------------------------------------------------------------------------------
2 * Copyright (c) Remy Suen. All rights reserved.
3 * Licensed under the MIT License. See License.txt in the project root for license information.
4 * ------------------------------------------------------------------------------------------ */
5'use strict';
6Object.defineProperty(exports, "__esModule", { value: true });
7exports.Util = void 0;
8class Util {
9 static isUTF8BOM(char) {
10 const uintArray = Uint8Array.from(Buffer.from(char, "UTF-8"));
11 return uintArray[0] === 0xEF && uintArray[1] == 0xBB && uintArray[2] == 0xBF;
12 }
13 static isWhitespace(char) {
14 return char === ' ' || char === '\t' || Util.isNewline(char);
15 }
16 static isNewline(char) {
17 return char === '\r' || char === '\n';
18 }
19 static findLeadingNonWhitespace(content, escapeChar) {
20 whitespaceCheck: for (let i = 0; i < content.length; i++) {
21 switch (content.charAt(i)) {
22 case ' ':
23 case '\t':
24 continue;
25 case escapeChar:
26 escapeCheck: for (let j = i + 1; j < content.length; j++) {
27 switch (content.charAt(j)) {
28 case ' ':
29 case '\t':
30 continue;
31 case '\r':
32 // offset one more for \r\n
33 i = j + 1;
34 continue whitespaceCheck;
35 case '\n':
36 i = j;
37 continue whitespaceCheck;
38 default:
39 break escapeCheck;
40 }
41 }
42 // found an escape character and then reached EOF
43 return -1;
44 default:
45 return i;
46 }
47 }
48 // only possible if the content is the empty string
49 return -1;
50 }
51 /**
52 * Determines if the given position is contained within the given range.
53 *
54 * @param position the position to check
55 * @param range the range to see if the position is inside of
56 */
57 static isInsideRange(position, range) {
58 if (range.start.line === range.end.line) {
59 return range.start.line === position.line
60 && range.start.character <= position.character
61 && position.character <= range.end.character;
62 }
63 else if (range.start.line === position.line) {
64 return range.start.character <= position.character;
65 }
66 else if (range.end.line === position.line) {
67 return position.character <= range.end.character;
68 }
69 return range.start.line < position.line && position.line < range.end.line;
70 }
71}
72exports.Util = Util;