import LanguageService from "./LanguageService"
import { type worker } from "monaco-editor-core"
import { IError } from "./errorListener"

export class OpenQasmWorker {
  private _ctx: worker.IWorkerContext
  private languageService: LanguageService
  constructor(ctx: worker.IWorkerContext) {
    this._ctx = ctx
    this.languageService = new LanguageService()
  }

  static getMethodNames() {
    return ['doValidation'];
  }


  doValidation(): Promise<IError[]> {
    const code = this.getTextDocument();
    return Promise.resolve(this.languageService.validate(code));
  }

  format(code: string): Promise<string> {
    return Promise.resolve(this.languageService.format(code));
  }

  private getTextDocument(): string {
    const model = this._ctx.getMirrorModels()[0];// When there are multiple files open, this will be an array
    return model.getValue();
  }

}
