You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.7 KiB
94 lines
3.7 KiB
"use strict"; |
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { |
|
if (k2 === undefined) k2 = k; |
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); |
|
}) : (function(o, m, k, k2) { |
|
if (k2 === undefined) k2 = k; |
|
o[k2] = m[k]; |
|
})); |
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { |
|
Object.defineProperty(o, "default", { enumerable: true, value: v }); |
|
}) : function(o, v) { |
|
o["default"] = v; |
|
}); |
|
var __importStar = (this && this.__importStar) || function (mod) { |
|
if (mod && mod.__esModule) return mod; |
|
var result = {}; |
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); |
|
__setModuleDefault(result, mod); |
|
return result; |
|
}; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.checkText = exports.IncludeExcludeFlag = exports.validateText = exports.diagSource = void 0; |
|
const Dictionary = __importStar(require("./SpellingDictionary")); |
|
const Settings = __importStar(require("./Settings")); |
|
exports.diagSource = 'cSpell Checker'; |
|
const TV = __importStar(require("./textValidator")); |
|
function validateText(text, settings) { |
|
const finalSettings = Settings.finalizeSettings(settings); |
|
const dict = Dictionary.getDictionary(finalSettings); |
|
return dict.then((dict) => [...TV.validateText(text, dict, finalSettings)]); |
|
} |
|
exports.validateText = validateText; |
|
var IncludeExcludeFlag; |
|
(function (IncludeExcludeFlag) { |
|
IncludeExcludeFlag["INCLUDE"] = "I"; |
|
IncludeExcludeFlag["EXCLUDE"] = "E"; |
|
})(IncludeExcludeFlag = exports.IncludeExcludeFlag || (exports.IncludeExcludeFlag = {})); |
|
async function checkText(text, settings) { |
|
const validationResult = validateText(text, settings); |
|
const finalSettings = Settings.finalizeSettings(settings); |
|
const includeRanges = TV.calcTextInclusionRanges(text, finalSettings); |
|
const result = []; |
|
let lastPos = 0; |
|
for (const { startPos, endPos } of includeRanges) { |
|
result.push({ |
|
text: text.slice(lastPos, startPos), |
|
startPos: lastPos, |
|
endPos: startPos, |
|
flagIE: IncludeExcludeFlag.EXCLUDE, |
|
}); |
|
result.push({ |
|
text: text.slice(startPos, endPos), |
|
startPos, |
|
endPos, |
|
flagIE: IncludeExcludeFlag.INCLUDE, |
|
}); |
|
lastPos = endPos; |
|
} |
|
result.push({ |
|
text: text.slice(lastPos), |
|
startPos: lastPos, |
|
endPos: text.length, |
|
flagIE: IncludeExcludeFlag.EXCLUDE, |
|
}); |
|
const issues = await validationResult; |
|
function* merge() { |
|
let i = 0; |
|
for (const r of result) { |
|
if (i >= issues.length || issues[i].offset >= r.endPos) { |
|
yield r; |
|
continue; |
|
} |
|
const span = { ...r }; |
|
while (i < issues.length && issues[i].offset < span.endPos) { |
|
const issue = issues[i]; |
|
const endPos = issue.offset; |
|
const text = span.text.slice(0, endPos - span.startPos); |
|
const endPosError = issue.offset + issue.text.length; |
|
yield { ...span, text, endPos }; |
|
yield { ...span, isError: true, startPos: issue.offset, endPos: endPosError, text: issue.text }; |
|
span.text = span.text.slice(endPosError - span.startPos); |
|
span.startPos = endPosError; |
|
i += 1; |
|
} |
|
yield span; |
|
} |
|
} |
|
return { |
|
text, |
|
items: [...merge()].filter((i) => i.startPos < i.endPos), |
|
}; |
|
} |
|
exports.checkText = checkText; |
|
//# sourceMappingURL=validator.js.map
|