@senx/warpview-editor
Version:
WarpView Editor Elements
79 lines • 11 kB
JavaScript
/*
* Copyright 2020 SenX S.A.S.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { languages } from 'monaco-editor';
var CompletionItemKind = languages.CompletionItemKind;
export class W10CompletionItemProvider {
constructor(languageId, config) {
this.languageId = languageId;
this.config = config;
}
_provideCompletionItems(model, position, _context, token, source, snippets) {
const defs = {
suggestions: [],
};
source.forEach(f => {
const item = {
label: this.transformKeyWord(f.name),
insertText: this.transformKeyWord(f.name),
range: undefined,
kind: W10CompletionItemProvider.getType(f.tags, f.name)
};
defs.suggestions.push(item);
});
Object.keys(snippets).forEach(s => {
const snippet = snippets[s];
defs.suggestions.push({
label: snippet.prefix,
kind: languages.CompletionItemKind.Snippet,
insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet,
documentation: snippet.prefix,
insertText: snippet.body.join('\n')
});
});
return Promise.resolve(defs);
}
static getType(tags, name) {
const t = tags.join(' ');
if (t.indexOf('constant') > -1) {
return CompletionItemKind.Enum;
}
else if (t.indexOf('reducer') > -1 && name !== 'REDUCE') {
return CompletionItemKind.Interface;
}
else if (t.indexOf('mapper') > -1 && name !== 'MAP') {
return CompletionItemKind.Interface;
}
else if (t.indexOf('bucketize') > -1 && name !== 'BUCKETIZE') {
return CompletionItemKind.Interface;
}
else if (t.indexOf('filter') > -1 && name !== 'FILTER') {
return CompletionItemKind.Interface;
}
else if (t.indexOf('control') > -1) {
return CompletionItemKind.Keyword;
}
else if (t.indexOf('operators') > -1) {
return CompletionItemKind.Method;
}
else if (t.indexOf('stack') > -1) {
return CompletionItemKind.Module;
}
else {
return CompletionItemKind.Function;
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVzEwQ29tcGxldGlvbkl0ZW1Qcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LWVkaXRvci1uZy9zcmMvbGliL2VsZW1lbnRzL3dhcnAtdmlldy1lZGl0b3IvcHJvdmlkZXJzL1cxMENvbXBsZXRpb25JdGVtUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQTRCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFdkYsSUFBTyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUM7QUFPekQsTUFBTSxPQUFnQix5QkFBeUI7SUFJN0MsWUFBc0IsVUFBa0IsRUFBRSxNQUFjO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNUyx1QkFBdUIsQ0FBQyxLQUE0QixFQUFFLFFBQWtCLEVBQUUsUUFBcUMsRUFBRSxLQUF3QixFQUFFLE1BQVcsRUFBRSxRQUFhO1FBQzdLLE1BQU0sSUFBSSxHQUFtQjtZQUMzQixXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixNQUFNLElBQUksR0FBbUI7Z0JBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN6QyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDeEQsQ0FBQztZQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNwQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQ3JCLElBQUksRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsT0FBTztnQkFDMUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlO2dCQUN2RSxhQUFhLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQzdCLFVBQVUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbEIsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxJQUFZO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDekQsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7U0FDckM7YUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtZQUNyRCxPQUFPLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztTQUNyQzthQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQzlELE9BQU8sa0JBQWtCLENBQUMsU0FBUyxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDeEQsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7U0FDckM7YUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7U0FDbkM7YUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7U0FDbEM7YUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDbEMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7U0FDbEM7YUFBTTtZQUNMLE9BQU8sa0JBQWtCLENBQUMsUUFBUSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBTZW5YIFMuQS5TLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDYW5jZWxsYXRpb25Ub2tlbiwgZWRpdG9yLCBsYW5ndWFnZXMsIFBvc2l0aW9uLCBUaGVuYWJsZX0gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgQ29tcGxldGlvbkxpc3QgPSBsYW5ndWFnZXMuQ29tcGxldGlvbkxpc3Q7XG5pbXBvcnQgQ29tcGxldGlvbkl0ZW1LaW5kID0gbGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZDtcbmltcG9ydCBDb21wbGV0aW9uSXRlbVByb3ZpZGVyID0gbGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtUHJvdmlkZXI7XG5pbXBvcnQgSVJlYWRPbmx5TW9kZWwgPSBlZGl0b3IuSVJlYWRPbmx5TW9kZWw7XG5pbXBvcnQgQ29tcGxldGlvbkNvbnRleHQgPSBsYW5ndWFnZXMuQ29tcGxldGlvbkNvbnRleHQ7XG5pbXBvcnQgQ29tcGxldGlvbkl0ZW0gPSBsYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW07XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vLi4vLi4vbW9kZWwvY29uZmlnJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFcxMENvbXBsZXRpb25JdGVtUHJvdmlkZXIgaW1wbGVtZW50cyBDb21wbGV0aW9uSXRlbVByb3ZpZGVyIHtcbiAgbGFuZ3VhZ2VJZDogc3RyaW5nO1xuICBjb25maWc6IENvbmZpZyA7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGxhbmd1YWdlSWQ6IHN0cmluZywgY29uZmlnOiBDb25maWcpIHtcbiAgICB0aGlzLmxhbmd1YWdlSWQgPSBsYW5ndWFnZUlkO1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgYWJzdHJhY3QgcHJvdmlkZUNvbXBsZXRpb25JdGVtcyhtb2RlbDogSVJlYWRPbmx5TW9kZWwsIHBvc2l0aW9uOiBQb3NpdGlvbiwgX2NvbnRleHQ6IENvbXBsZXRpb25Db250ZXh0LCB0b2tlbjogQ2FuY2VsbGF0aW9uVG9rZW4pOiBUaGVuYWJsZTxDb21wbGV0aW9uTGlzdD47XG5cbiAgYWJzdHJhY3QgdHJhbnNmb3JtS2V5V29yZChrZXl3b3JkOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIF9wcm92aWRlQ29tcGxldGlvbkl0ZW1zKG1vZGVsOiBlZGl0b3IuSVJlYWRPbmx5TW9kZWwsIHBvc2l0aW9uOiBQb3NpdGlvbiwgX2NvbnRleHQ6IGxhbmd1YWdlcy5Db21wbGV0aW9uQ29udGV4dCwgdG9rZW46IENhbmNlbGxhdGlvblRva2VuLCBzb3VyY2U6IGFueSwgc25pcHBldHM6IGFueSk6IFRoZW5hYmxlPGxhbmd1YWdlcy5Db21wbGV0aW9uTGlzdD4ge1xuICAgIGNvbnN0IGRlZnM6IENvbXBsZXRpb25MaXN0ID0ge1xuICAgICAgc3VnZ2VzdGlvbnM6IFtdLFxuICAgIH07XG4gICAgc291cmNlLmZvckVhY2goZiA9PiB7XG4gICAgICBjb25zdCBpdGVtOiBDb21wbGV0aW9uSXRlbSA9IHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNmb3JtS2V5V29yZChmLm5hbWUpLFxuICAgICAgICBpbnNlcnRUZXh0OiB0aGlzLnRyYW5zZm9ybUtleVdvcmQoZi5uYW1lKSxcbiAgICAgICAgcmFuZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAga2luZDogVzEwQ29tcGxldGlvbkl0ZW1Qcm92aWRlci5nZXRUeXBlKGYudGFncywgZi5uYW1lKVxuICAgICAgfTtcbiAgICAgIGRlZnMuc3VnZ2VzdGlvbnMucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyhzbmlwcGV0cykuZm9yRWFjaChzID0+IHtcbiAgICAgIGNvbnN0IHNuaXBwZXQgPSBzbmlwcGV0c1tzXTtcbiAgICAgIGRlZnMuc3VnZ2VzdGlvbnMucHVzaCh7XG4gICAgICAgIGxhYmVsOiBzbmlwcGV0LnByZWZpeCxcbiAgICAgICAga2luZDogbGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5TbmlwcGV0LFxuICAgICAgICBpbnNlcnRUZXh0UnVsZXM6IGxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlLkluc2VydEFzU25pcHBldCxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogc25pcHBldC5wcmVmaXgsXG4gICAgICAgIGluc2VydFRleHQ6IHNuaXBwZXQuYm9keS5qb2luKCdcXG4nKVxuICAgICAgfSBhcyBDb21wbGV0aW9uSXRlbSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRlZnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0VHlwZSh0YWdzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nKTogQ29tcGxldGlvbkl0ZW1LaW5kIHtcbiAgICBjb25zdCB0ID0gdGFncy5qb2luKCcgJyk7XG4gICAgaWYgKHQuaW5kZXhPZignY29uc3RhbnQnKSA+IC0xKSB7XG4gICAgICByZXR1cm4gQ29tcGxldGlvbkl0ZW1LaW5kLkVudW07XG4gICAgfSBlbHNlIGlmICh0LmluZGV4T2YoJ3JlZHVjZXInKSA+IC0xICYmIG5hbWUgIT09ICdSRURVQ0UnKSB7XG4gICAgICByZXR1cm4gQ29tcGxldGlvbkl0ZW1LaW5kLkludGVyZmFjZTtcbiAgICB9IGVsc2UgaWYgKHQuaW5kZXhPZignbWFwcGVyJykgPiAtMSAmJiBuYW1lICE9PSAnTUFQJykge1xuICAgICAgcmV0dXJuIENvbXBsZXRpb25JdGVtS2luZC5JbnRlcmZhY2U7XG4gICAgfSBlbHNlIGlmICh0LmluZGV4T2YoJ2J1Y2tldGl6ZScpID4gLTEgJiYgbmFtZSAhPT0gJ0JVQ0tFVElaRScpIHtcbiAgICAgIHJldHVybiBDb21wbGV0aW9uSXRlbUtpbmQuSW50ZXJmYWNlO1xuICAgIH0gZWxzZSBpZiAodC5pbmRleE9mKCdmaWx0ZXInKSA+IC0xICYmIG5hbWUgIT09ICdGSUxURVInKSB7XG4gICAgICByZXR1cm4gQ29tcGxldGlvbkl0ZW1LaW5kLkludGVyZmFjZTtcbiAgICB9IGVsc2UgaWYgKHQuaW5kZXhPZignY29udHJvbCcpID4gLTEpIHtcbiAgICAgIHJldHVybiBDb21wbGV0aW9uSXRlbUtpbmQuS2V5d29yZDtcbiAgICB9IGVsc2UgaWYgKHQuaW5kZXhPZignb3BlcmF0b3JzJykgPiAtMSkge1xuICAgICAgcmV0dXJuIENvbXBsZXRpb25JdGVtS2luZC5NZXRob2Q7XG4gICAgfSBlbHNlIGlmICh0LmluZGV4T2YoJ3N0YWNrJykgPiAtMSkge1xuICAgICAgcmV0dXJuIENvbXBsZXRpb25JdGVtS2luZC5Nb2R1bGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBDb21wbGV0aW9uSXRlbUtpbmQuRnVuY3Rpb247XG4gICAgfVxuICB9XG59XG4iXX0=