UNPKG

twing

Version:

First-class Twig engine for Node.js

31 lines (30 loc) 1.29 kB
"use strict"; 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;