Skip to content

Commit db5a09c

Browse files
committed
json: add getNodeType
1 parent 320f6b6 commit db5a09c

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

src/vs/base/common/json.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,7 @@ export function getLocation(text: string, position: number): Location {
786786
if (position < offset) {
787787
throw earlyReturnException;
788788
}
789-
setPreviousNode(value, offset, length, getLiteralNodeType(value));
789+
setPreviousNode(value, offset, length, getNodeType(value));
790790

791791
if (position <= offset + length) {
792792
throw earlyReturnException;
@@ -928,7 +928,7 @@ export function parseTree(text: string, errors: ParseError[] = [], options: Pars
928928
ensurePropertyComplete(offset + length);
929929
},
930930
onLiteralValue: (value: any, offset: number, length: number) => {
931-
onValue({ type: getLiteralNodeType(value), offset, length, parent: currentParent, value });
931+
onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });
932932
ensurePropertyComplete(offset + length);
933933
},
934934
onSeparator: (sep: string, offset: number, length: number) => {
@@ -1338,11 +1338,19 @@ export function stripComments(text: string, replaceCh?: string): string {
13381338
return parts.join('');
13391339
}
13401340

1341-
function getLiteralNodeType(value: any): NodeType {
1341+
export function getNodeType(value: any): NodeType {
13421342
switch (typeof value) {
13431343
case 'boolean': return 'boolean';
13441344
case 'number': return 'number';
13451345
case 'string': return 'string';
1346+
case 'object': {
1347+
if (!value) {
1348+
return 'null';
1349+
} else if (Array.isArray(value)) {
1350+
return 'array';
1351+
}
1352+
return 'object';
1353+
}
13461354
default: return 'null';
13471355
}
13481356
}

0 commit comments

Comments
 (0)