mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 19:42:56 +01:00
Adopt new scripts in monaco-json
This commit is contained in:
parent
94ca41beeb
commit
bc3274a7c8
8 changed files with 108 additions and 136 deletions
|
|
@ -69,13 +69,13 @@ class ParentsStack {
|
|||
class JSONState implements languages.IState {
|
||||
private _state: languages.IState;
|
||||
|
||||
public scanError: json.ScanError;
|
||||
public scanError: ScanError;
|
||||
public lastWasColon: boolean;
|
||||
public parents: ParentsStack | null;
|
||||
|
||||
constructor(
|
||||
state: languages.IState,
|
||||
scanError: json.ScanError,
|
||||
scanError: ScanError,
|
||||
lastWasColon: boolean,
|
||||
parents: ParentsStack | null
|
||||
) {
|
||||
|
|
@ -112,6 +112,36 @@ class JSONState implements languages.IState {
|
|||
}
|
||||
}
|
||||
|
||||
const enum ScanError {
|
||||
None = 0,
|
||||
UnexpectedEndOfComment = 1,
|
||||
UnexpectedEndOfString = 2,
|
||||
UnexpectedEndOfNumber = 3,
|
||||
InvalidUnicode = 4,
|
||||
InvalidEscapeCharacter = 5,
|
||||
InvalidCharacter = 6
|
||||
}
|
||||
|
||||
const enum SyntaxKind {
|
||||
OpenBraceToken = 1,
|
||||
CloseBraceToken = 2,
|
||||
OpenBracketToken = 3,
|
||||
CloseBracketToken = 4,
|
||||
CommaToken = 5,
|
||||
ColonToken = 6,
|
||||
NullKeyword = 7,
|
||||
TrueKeyword = 8,
|
||||
FalseKeyword = 9,
|
||||
StringLiteral = 10,
|
||||
NumericLiteral = 11,
|
||||
LineCommentTrivia = 12,
|
||||
BlockCommentTrivia = 13,
|
||||
LineBreakTrivia = 14,
|
||||
Trivia = 15,
|
||||
Unknown = 16,
|
||||
EOF = 17
|
||||
}
|
||||
|
||||
function tokenize(
|
||||
comments: boolean,
|
||||
line: string,
|
||||
|
|
@ -124,11 +154,11 @@ function tokenize(
|
|||
let adjustOffset = false;
|
||||
|
||||
switch (state.scanError) {
|
||||
case json.ScanError.UnexpectedEndOfString:
|
||||
case ScanError.UnexpectedEndOfString:
|
||||
line = '"' + line;
|
||||
numberOfInsertedCharacters = 1;
|
||||
break;
|
||||
case json.ScanError.UnexpectedEndOfComment:
|
||||
case ScanError.UnexpectedEndOfComment:
|
||||
line = '/*' + line;
|
||||
numberOfInsertedCharacters = 2;
|
||||
break;
|
||||
|
|
@ -147,8 +177,8 @@ function tokenize(
|
|||
let offset = offsetDelta + scanner.getPosition();
|
||||
let type = '';
|
||||
|
||||
const kind = scanner.scan();
|
||||
if (kind === json.SyntaxKind.EOF) {
|
||||
const kind = <SyntaxKind><any>scanner.scan();
|
||||
if (kind === SyntaxKind.EOF) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -168,50 +198,50 @@ function tokenize(
|
|||
|
||||
// brackets and type
|
||||
switch (kind) {
|
||||
case json.SyntaxKind.OpenBraceToken:
|
||||
case SyntaxKind.OpenBraceToken:
|
||||
parents = ParentsStack.push(parents, JSONParent.Object);
|
||||
type = TOKEN_DELIM_OBJECT;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.CloseBraceToken:
|
||||
case SyntaxKind.CloseBraceToken:
|
||||
parents = ParentsStack.pop(parents);
|
||||
type = TOKEN_DELIM_OBJECT;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.OpenBracketToken:
|
||||
case SyntaxKind.OpenBracketToken:
|
||||
parents = ParentsStack.push(parents, JSONParent.Array);
|
||||
type = TOKEN_DELIM_ARRAY;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.CloseBracketToken:
|
||||
case SyntaxKind.CloseBracketToken:
|
||||
parents = ParentsStack.pop(parents);
|
||||
type = TOKEN_DELIM_ARRAY;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.ColonToken:
|
||||
case SyntaxKind.ColonToken:
|
||||
type = TOKEN_DELIM_COLON;
|
||||
lastWasColon = true;
|
||||
break;
|
||||
case json.SyntaxKind.CommaToken:
|
||||
case SyntaxKind.CommaToken:
|
||||
type = TOKEN_DELIM_COMMA;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.TrueKeyword:
|
||||
case json.SyntaxKind.FalseKeyword:
|
||||
case SyntaxKind.TrueKeyword:
|
||||
case SyntaxKind.FalseKeyword:
|
||||
type = TOKEN_VALUE_BOOLEAN;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.NullKeyword:
|
||||
case SyntaxKind.NullKeyword:
|
||||
type = TOKEN_VALUE_NULL;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.StringLiteral:
|
||||
case SyntaxKind.StringLiteral:
|
||||
const currentParent = parents ? parents.type : JSONParent.Object;
|
||||
const inArray = currentParent === JSONParent.Array;
|
||||
type = lastWasColon || inArray ? TOKEN_VALUE_STRING : TOKEN_PROPERTY_NAME;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
case json.SyntaxKind.NumericLiteral:
|
||||
case SyntaxKind.NumericLiteral:
|
||||
type = TOKEN_VALUE_NUMBER;
|
||||
lastWasColon = false;
|
||||
break;
|
||||
|
|
@ -220,10 +250,10 @@ function tokenize(
|
|||
// comments, iff enabled
|
||||
if (comments) {
|
||||
switch (kind) {
|
||||
case json.SyntaxKind.LineCommentTrivia:
|
||||
case SyntaxKind.LineCommentTrivia:
|
||||
type = TOKEN_COMMENT_LINE;
|
||||
break;
|
||||
case json.SyntaxKind.BlockCommentTrivia:
|
||||
case SyntaxKind.BlockCommentTrivia:
|
||||
type = TOKEN_COMMENT_BLOCK;
|
||||
break;
|
||||
}
|
||||
|
|
@ -231,7 +261,7 @@ function tokenize(
|
|||
|
||||
ret.endState = new JSONState(
|
||||
state.getStateData(),
|
||||
scanner.getTokenError(),
|
||||
<ScanError><any>scanner.getTokenError(),
|
||||
lastWasColon,
|
||||
parents
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue