in tools/vscode_query_breakdown/src/extension.ts [85:140]
function decorate(editor: vscode.TextEditor) {
const decorationUnparseableArray: vscode.DecorationOptions[] = [];
const decorationParseableArray: vscode.DecorationOptions[] = [];
// parses through the json objects
for (let i = 0; i < json.length - 2; i++) {
// finds error position
const errorRange = new vscode.Range(
json[i].error_position.startLine - 1,
json[i].error_position.startColumn - 1,
json[i].error_position.endLine - 1,
json[i].error_position.endColumn
);
// deletion case
if (json[i].error_type === 'DELETION') {
const deletionMessage = new vscode.MarkdownString('Deleted');
decorationUnparseableArray.push({
range: errorRange,
hoverMessage: deletionMessage,
});
}
// replacement case
else if (json[i].error_type === 'REPLACEMENT') {
const replacementMessage = new vscode.MarkdownString(
'Replaced ' + json[i].replacedFrom + ' with ' + json[i].replacedTo
);
decorationUnparseableArray.push({
range: errorRange,
hoverMessage: replacementMessage,
});
} else {
// error handling
continue;
}
}
// constructs decoration option for entire document
const entireDocument = new vscode.Range(
editor.document.lineAt(0).range.start,
editor.document.lineAt(editor.document.lineCount - 1).range.end
);
decorationParseableArray.push({range: entireDocument});
// sets the decorations
editor.setDecorations(decorationTypeParseable, decorationParseableArray);
editor.setDecorations(decorationTypeUnparseable, decorationUnparseableArray);
vscode.window.showInformationMessage(
'Percentage of Parseable Components: ' +
json[json.length - 2].performance +
'%'
);
vscode.window.showInformationMessage(
'Runtime: ' + json[json.length - 1].runtime + ' seconds'
);
}