import * as path from "path"; import * as fs from "fs"; import Completer from "../../interfaces/Completer"; import { CompletionItemKind, CompletionItem } from "vscode-languageserver/lib/main"; export default class AudioCompleter implements Completer { public projectPath: string; setPath(projectPath: string) { this.projectPath = projectPath; } getItems(): CompletionItem[] { const uiPath: string = "_eko_/config/playerOptions.json"; const completionsPath = path.join(this.projectPath, uiPath); let completionJson: { plugins: {audio: {sounds: [{}]}} } = { plugins: {audio: {sounds: [{}]}} }; let result: CompletionItem[] = []; fs.readFileSync(completionsPath, "utf8"); completionJson = JSON.parse( fs.readFileSync(completionsPath, "utf8") ); if (Array.isArray(completionJson.plugins.audio.sounds)) { result = completionJson.plugins.audio.sounds.map( (sound: { id: string }) => { return { label: sound.id, kind: CompletionItemKind.Constant, detail: 'Audio' }; } ); } else { result = Object.keys(completionJson.plugins.audio.sounds).map( (id: string ) => { return { label: id, kind: CompletionItemKind.Constant, detail: 'Audio' }; } ); } return result; } }