monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
75 lines (74 loc) • 3.24 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
export class BaseSQLWorker {
constructor(_ctx, _createData) {
this.keywords = [];
}
doValidation(code) {
return __awaiter(this, void 0, void 0, function* () {
code = code || this.getTextDocument();
if (code) {
const result = this.parser.validate(code);
return Promise.resolve(result);
}
return Promise.resolve([]);
});
}
parserTreeToString(code) {
return __awaiter(this, void 0, void 0, function* () {
if (code) {
const parser = this.parser.createParser(code);
const parseTree = parser.program();
const result = parseTree.toStringTree(parser);
return Promise.resolve(result);
}
return Promise.resolve('');
});
}
doCompletion(code, position) {
return __awaiter(this, void 0, void 0, function* () {
code = code || this.getTextDocument();
if (code) {
const suggestions = this.parser.getSuggestionAtCaretPosition(code, position);
return Promise.resolve(suggestions);
}
return Promise.resolve(null);
});
}
doCompletionWithEntities(code, position) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
code = code || this.getTextDocument();
if (code) {
const suggestions = this.parser.getSuggestionAtCaretPosition(code, position);
let allEntities = null;
if ((_a = suggestions === null || suggestions === void 0 ? void 0 : suggestions.syntax) === null || _a === void 0 ? void 0 : _a.length) {
allEntities = this.parser.getAllEntities(code, position);
}
return Promise.resolve([suggestions, allEntities]);
}
return Promise.resolve([null, null]);
});
}
getAllEntities(code, position) {
return __awaiter(this, void 0, void 0, function* () {
code = code || this.getTextDocument();
if (code) {
const allEntities = this.parser.getAllEntities(code, position);
return Promise.resolve(allEntities);
}
return Promise.resolve(null);
});
}
getTextDocument() {
const model = this._ctx.getMirrorModels()[0]; // When there are multiple files open, this will be an array
return model && model.getValue();
}
}