UNPKG

text-to-map

Version:

Text To Map usiluje o lepší, strojově zpracovatelné využití částí vyhlášek s výčtem ulic a dalších lokací. Jde o rozšiřitelnou sadu konceptů a nástrojů, které zajistí hladký převod výčtu ulic a jejich rozsahů v lidsky srozumitelném jazyce do strojově zpra

40 lines 6.9 kB
import { Lexer } from "chevrotain"; import { SmdParser } from "./smd-parser"; import { tokenVocabulary, smdTokens, resetTokenState, prepareLine, } from "./token-definition"; const printLexingResultInfo = (lexingResult) => { const tokens = lexingResult.tokens.map((token) => "'" + token.image + "' (" + token.tokenType.name + ")"); console.error(tokens); }; const smdLexer = new Lexer(smdTokens, { positionTracking: "onlyOffset" }); export const smdParser = new SmdParser(tokenVocabulary); export const parseLine = (text, showDebug = false) => { resetTokenState(); // this is needed to reset the token state between lines const errors = []; const lexingResult = smdLexer.tokenize(prepareLine(text)); if (lexingResult.errors.length > 0) { errors.push(...lexingResult.errors.map((error) => ({ message: `Neočekávaný znak na tomto místě.`, startOffset: error.offset, endOffset: error.offset + error.length + 1, }))); if (showDebug) { printLexingResultInfo(lexingResult); } return { smdLines: [], errors }; } smdParser.input = lexingResult.tokens; const smdLines = smdParser.street(); if (smdParser.errors.length > 0) { errors.push(...smdParser.errors.map((error) => ({ message: `Nesprávný zápis pravidla - nevynechali jste něco?`, startOffset: error.token.startOffset, endOffset: error.token.endOffset ?? text.length, }))); if (showDebug) { printLexingResultInfo(lexingResult); } return { smdLines: [], errors }; } return { smdLines, errors }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLWxpbmUtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQtbGluZS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxHQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFlBQTJCLEVBQUUsRUFBRTtJQUM1RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDcEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxHQUFHLENBQ2xFLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDMUUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixJQUFZLEVBQ1osU0FBUyxHQUFHLEtBQUssRUFDRSxFQUFFO0lBQ3JCLGVBQWUsRUFBRSxDQUFDLENBQUMsd0RBQXdEO0lBQzNFLE1BQU0sTUFBTSxHQUFlLEVBQUUsQ0FBQztJQUU5QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTFELElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyQyxPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTTtZQUN6QixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7U0FDM0MsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqQztJQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFcEMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FDVCxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVztZQUNwQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU07U0FDaEQsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqQztJQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUxleGluZ1Jlc3VsdCwgTGV4ZXIgfSBmcm9tIFwiY2hldnJvdGFpblwiO1xyXG5pbXBvcnQgeyBTbWRQYXJzZXIgfSBmcm9tIFwiLi9zbWQtcGFyc2VyXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gIHRva2VuVm9jYWJ1bGFyeSxcclxuICBzbWRUb2tlbnMsXHJcbiAgcmVzZXRUb2tlblN0YXRlLFxyXG4gIHByZXBhcmVMaW5lLFxyXG59IGZyb20gXCIuL3Rva2VuLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgUHJvY2Vzc2VkU21kTGluZXMsIFNtZEVycm9yLCBTbWRMaW5lIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmNvbnN0IHByaW50TGV4aW5nUmVzdWx0SW5mbyA9IChsZXhpbmdSZXN1bHQ6IElMZXhpbmdSZXN1bHQpID0+IHtcclxuICBjb25zdCB0b2tlbnMgPSBsZXhpbmdSZXN1bHQudG9rZW5zLm1hcChcclxuICAgICh0b2tlbikgPT4gXCInXCIgKyB0b2tlbi5pbWFnZSArIFwiJyAoXCIgKyB0b2tlbi50b2tlblR5cGUubmFtZSArIFwiKVwiXHJcbiAgKTtcclxuICBjb25zb2xlLmVycm9yKHRva2Vucyk7XHJcbn07XHJcblxyXG5jb25zdCBzbWRMZXhlciA9IG5ldyBMZXhlcihzbWRUb2tlbnMsIHsgcG9zaXRpb25UcmFja2luZzogXCJvbmx5T2Zmc2V0XCIgfSk7XHJcbmV4cG9ydCBjb25zdCBzbWRQYXJzZXIgPSBuZXcgU21kUGFyc2VyKHRva2VuVm9jYWJ1bGFyeSk7XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VMaW5lID0gKFxyXG4gIHRleHQ6IHN0cmluZyxcclxuICBzaG93RGVidWcgPSBmYWxzZVxyXG4pOiBQcm9jZXNzZWRTbWRMaW5lcyA9PiB7XHJcbiAgcmVzZXRUb2tlblN0YXRlKCk7IC8vIHRoaXMgaXMgbmVlZGVkIHRvIHJlc2V0IHRoZSB0b2tlbiBzdGF0ZSBiZXR3ZWVuIGxpbmVzXHJcbiAgY29uc3QgZXJyb3JzOiBTbWRFcnJvcltdID0gW107XHJcblxyXG4gIGNvbnN0IGxleGluZ1Jlc3VsdCA9IHNtZExleGVyLnRva2VuaXplKHByZXBhcmVMaW5lKHRleHQpKTtcclxuXHJcbiAgaWYgKGxleGluZ1Jlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgZXJyb3JzLnB1c2goXHJcbiAgICAgIC4uLmxleGluZ1Jlc3VsdC5lcnJvcnMubWFwKChlcnJvcikgPT4gKHtcclxuICAgICAgICBtZXNzYWdlOiBgTmVvxI1la8OhdmFuw70gem5hayBuYSB0b210byBtw61zdMSbLmAsXHJcbiAgICAgICAgc3RhcnRPZmZzZXQ6IGVycm9yLm9mZnNldCxcclxuICAgICAgICBlbmRPZmZzZXQ6IGVycm9yLm9mZnNldCArIGVycm9yLmxlbmd0aCArIDEsXHJcbiAgICAgIH0pKVxyXG4gICAgKTtcclxuICAgIGlmIChzaG93RGVidWcpIHtcclxuICAgICAgcHJpbnRMZXhpbmdSZXN1bHRJbmZvKGxleGluZ1Jlc3VsdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBzbWRMaW5lczogW10sIGVycm9ycyB9O1xyXG4gIH1cclxuXHJcbiAgc21kUGFyc2VyLmlucHV0ID0gbGV4aW5nUmVzdWx0LnRva2VucztcclxuICBjb25zdCBzbWRMaW5lcyA9IHNtZFBhcnNlci5zdHJlZXQoKTtcclxuXHJcbiAgaWYgKHNtZFBhcnNlci5lcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgZXJyb3JzLnB1c2goXHJcbiAgICAgIC4uLnNtZFBhcnNlci5lcnJvcnMubWFwKChlcnJvcikgPT4gKHtcclxuICAgICAgICBtZXNzYWdlOiBgTmVzcHLDoXZuw70gesOhcGlzIHByYXZpZGxhIC0gbmV2eW5lY2hhbGkganN0ZSBuxJtjbz9gLFxyXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBlcnJvci50b2tlbi5zdGFydE9mZnNldCxcclxuICAgICAgICBlbmRPZmZzZXQ6IGVycm9yLnRva2VuLmVuZE9mZnNldCA/PyB0ZXh0Lmxlbmd0aCxcclxuICAgICAgfSkpXHJcbiAgICApO1xyXG4gICAgaWYgKHNob3dEZWJ1Zykge1xyXG4gICAgICBwcmludExleGluZ1Jlc3VsdEluZm8obGV4aW5nUmVzdWx0KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHNtZExpbmVzOiBbXSwgZXJyb3JzIH07XHJcbiAgfVxyXG5cclxuICByZXR1cm4geyBzbWRMaW5lcywgZXJyb3JzIH07XHJcbn07XHJcbiJdfQ==