@theia/monaco
Version:
Theia - Monaco Extension
129 lines • 5.28 kB
JavaScript
;
// *****************************************************************************
// Copyright (C) 2020 TypeFox and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// http://www.eclipse.org/legal/epl-2.0.
//
// This Source Code may also be made available under the following Secondary
// Licenses when the conditions for such availability set forth in the Eclipse
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
// with the GNU Classpath Exception which is available at
// https://www.gnu.org/software/classpath/license.html.
//
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
// *****************************************************************************
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProtocolToMonacoConverter = void 0;
const tslib_1 = require("tslib");
const inversify_1 = require("@theia/core/shared/inversify");
const monaco = require("@theia/monaco-editor-core");
let ProtocolToMonacoConverter = class ProtocolToMonacoConverter {
asRange(range) {
if (range === undefined) {
return undefined;
}
const start = this.asPosition(range.start);
const end = this.asPosition(range.end);
if (start instanceof monaco.Position && end instanceof monaco.Position) {
return new monaco.Range(start.lineNumber, start.column, end.lineNumber, end.column);
}
const startLineNumber = !start || start.lineNumber === undefined ? undefined : start.lineNumber;
const startColumn = !start || start.column === undefined ? undefined : start.column;
const endLineNumber = !end || end.lineNumber === undefined ? undefined : end.lineNumber;
const endColumn = !end || end.column === undefined ? undefined : end.column;
return { startLineNumber, startColumn, endLineNumber, endColumn };
}
asPosition(position) {
if (position === undefined) {
return undefined;
}
const { line, character } = position;
const lineNumber = line === undefined ? undefined : line + 1;
const column = character === undefined ? undefined : character + 1;
if (lineNumber !== undefined && column !== undefined) {
return new monaco.Position(lineNumber, column);
}
return { lineNumber, column };
}
asLocation(item) {
if (!item) {
return undefined;
}
const uri = monaco.Uri.parse(item.uri);
const range = this.asRange(item.range);
return {
uri, range
};
}
asTextEdit(edit) {
if (!edit) {
return undefined;
}
const range = this.asRange(edit.range);
return {
range,
text: edit.newText
};
}
asTextEdits(items) {
if (!items) {
return undefined;
}
return items.map(item => this.asTextEdit(item));
}
asSeverity(severity) {
if (severity === 1) {
return monaco.MarkerSeverity.Error;
}
if (severity === 2) {
return monaco.MarkerSeverity.Warning;
}
if (severity === 3) {
return monaco.MarkerSeverity.Info;
}
return monaco.MarkerSeverity.Hint;
}
asDiagnostics(diagnostics) {
if (!diagnostics) {
return undefined;
}
return diagnostics.map(diagnostic => this.asDiagnostic(diagnostic));
}
asDiagnostic(diagnostic) {
return {
code: typeof diagnostic.code === 'number' ? diagnostic.code.toString() : diagnostic.code,
severity: this.asSeverity(diagnostic.severity),
message: diagnostic.message,
source: diagnostic.source,
startLineNumber: diagnostic.range.start.line + 1,
startColumn: diagnostic.range.start.character + 1,
endLineNumber: diagnostic.range.end.line + 1,
endColumn: diagnostic.range.end.character + 1,
relatedInformation: this.asRelatedInformations(diagnostic.relatedInformation),
tags: diagnostic.tags
};
}
asRelatedInformations(relatedInformation) {
if (!relatedInformation) {
return undefined;
}
return relatedInformation.map(item => this.asRelatedInformation(item));
}
asRelatedInformation(relatedInformation) {
return {
resource: monaco.Uri.parse(relatedInformation.location.uri),
startLineNumber: relatedInformation.location.range.start.line + 1,
startColumn: relatedInformation.location.range.start.character + 1,
endLineNumber: relatedInformation.location.range.end.line + 1,
endColumn: relatedInformation.location.range.end.character + 1,
message: relatedInformation.message
};
}
};
exports.ProtocolToMonacoConverter = ProtocolToMonacoConverter;
exports.ProtocolToMonacoConverter = ProtocolToMonacoConverter = tslib_1.__decorate([
(0, inversify_1.injectable)()
], ProtocolToMonacoConverter);
//# sourceMappingURL=protocol-to-monaco-converter.js.map