UNPKG

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
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 } } ]; } }