coc-spell-checker
Version:
Spelling checker for source code
44 lines • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const vscode_languageserver_1 = require("vscode-languageserver");
const cspell_lib_1 = require("cspell-lib");
const gensequence_1 = require("gensequence");
var cspell_lib_2 = require("cspell-lib");
exports.validateText = cspell_lib_2.validateText;
exports.diagnosticCollectionName = 'cSpell';
exports.diagSource = exports.diagnosticCollectionName;
exports.defaultCheckLimit = 500;
const diagSeverityMap = new Map([
['error', vscode_languageserver_1.DiagnosticSeverity.Error],
['warning', vscode_languageserver_1.DiagnosticSeverity.Warning],
['information', vscode_languageserver_1.DiagnosticSeverity.Information],
['hint', vscode_languageserver_1.DiagnosticSeverity.Hint],
]);
async function validateTextDocument(textDocument, options) {
return (await validateTextDocumentAsync(textDocument, options)).toArray();
}
exports.validateTextDocument = validateTextDocument;
async function validateTextDocumentAsync(textDocument, options) {
const { diagnosticLevel = vscode_languageserver_1.DiagnosticSeverity.Information.toString() } = options;
const severity = diagSeverityMap.get(diagnosticLevel.toLowerCase()) || vscode_languageserver_1.DiagnosticSeverity.Information;
const limit = (options.checkLimit || exports.defaultCheckLimit) * 1024;
const text = textDocument.getText().slice(0, limit);
const diags = gensequence_1.genSequence(await cspell_lib_1.validateText(text, options))
// Convert the offset into a position
.map(offsetWord => (Object.assign(Object.assign({}, offsetWord), { position: textDocument.positionAt(offsetWord.offset) })))
// Calculate the range
.map(word => (Object.assign(Object.assign({}, word), { range: {
start: word.position,
end: (Object.assign(Object.assign({}, word.position), { character: word.position.character + word.text.length }))
} })))
// Convert it to a Diagnostic
.map(({ text, range }) => ({
severity,
range: range,
message: `"${text}": Unknown word.`,
source: exports.diagSource
}));
return diags;
}
exports.validateTextDocumentAsync = validateTextDocumentAsync;
//# sourceMappingURL=validator.js.map