react-openqasm-editor
Version:
A powerful, customizable code editor for OpenQASM (Open Quantum Assembly Language) based on Monaco Editor.
29 lines (25 loc) • 1.05 kB
text/typescript
import * as monaco from 'monaco-editor-core'
import { WorkerAccessor } from '../types'
export default class FormatProvider implements monaco.languages.DocumentFormattingEditProvider {
constructor(private worker: WorkerAccessor) { }
provideDocumentFormattingEdits(model: monaco.editor.ITextModel): monaco.languages.ProviderResult<monaco.languages.TextEdit[]> {
return this.format(model.uri, model.getValue());
}
private async format(resource: monaco.Uri, code: string) {
const worker = await this.worker(resource);
const formattedCode = await worker.format(code);
const endLineNumber = code.split("\n").length + 1;
const endColumn = code.split("\n").map(line => line.length).sort((a, b) => a - b)[0] + 1;
return [
{
text: formattedCode,
range: {
endColumn,
endLineNumber,
startColumn: 0,
startLineNumber: 0
}
}
];
}
}