twing
Version:
First-class Twig engine for Node.js
31 lines (30 loc) • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createParsingError = exports.parsingErrorName = void 0;
const base_1 = require("./base");
const Levenshtein = require('levenshtein');
exports.parsingErrorName = 'TwingParsingError';
const createParsingError = (message, location, source, previous) => {
const baseError = (0, base_1.createBaseError)(exports.parsingErrorName, message, location, source, previous);
Error.captureStackTrace(baseError, exports.createParsingError);
return Object.create(baseError, {
addSuggestions: {
value: (name, items) => {
const alternatives = [];
let levenshtein;
for (const item of items) {
levenshtein = new Levenshtein(name, item);
if (levenshtein.distance <= (name.length / 3) || item.indexOf(name) > -1) {
alternatives.push(item);
}
}
if (alternatives.length < 1) {
return;
}
alternatives.sort();
baseError.appendMessage(` Did you mean "${alternatives.join(', ')}"?`);
}
}
});
};
exports.createParsingError = createParsingError;