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

68 lines 8.72 kB
let romanNumerals; const singleRomanNumeralPattern = /X{1,3}(IX|IV|V?I{0,3})|(IX|IV|VI{0,3})|(I{1,3})/g; const romanNumeralsListPattern = /(X{1,3}(IX|IV|V?I{0,3})|(IX|IV|VI{0,3})|(I{1,3}))(, ?(X{1,3}(IX|IV|V?I{0,3})|(IX|IV|VI{0,3})|(I{1,3})))+$/; const romanNumeralsRangePattern = /([IVXLCDM]+) ?- ?([IVXLCDM]+)$/; export const splitStreetViaRomanNumerals = (input) => { const list = romanNumeralsListPattern.exec(input); if (list) { const streetName = input.substring(0, input.indexOf(list[0])).trim(); return extractRomanNumerals(list[0]).map((numeral) => `${streetName} ${numeral}`); } else { const range = romanNumeralsRangePattern.exec(input); if (range) { const streetName = input.substring(0, input.indexOf(range[0])).trim(); const bounds = extractRomanNumerals(range[0]); if (!romanNumerals) { romanNumerals = generateRomanNumerals(100); } return romanNumerals .slice(romanNumerals.indexOf(bounds[0]), romanNumerals.indexOf(bounds[1]) + 1) .map((numeral) => `${streetName} ${numeral}`); } } return [input]; }; const extractRomanNumerals = (input) => { let n; const numerals = []; do { n = singleRomanNumeralPattern.exec(input); if (n) { numerals.push(n[0]); } } while (n); return numerals; }; // source: ChatGPT const generateRomanNumerals = (n) => { const romanNumerals = []; const romanNumeralsMap = new Map([ [1000, "M"], [900, "CM"], [500, "D"], [400, "CD"], [100, "C"], [90, "XC"], [50, "L"], [40, "XL"], [10, "X"], [9, "IX"], [5, "V"], [4, "IV"], [1, "I"], ]); for (let i = 1; i <= n; i++) { let number = i; let romanNumeral = ""; for (const [value, symbol] of romanNumeralsMap) { while (number >= value) { number -= value; romanNumeral += symbol; } } romanNumerals.push(romanNumeral); } return romanNumerals; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9tYW4tbnVtZXJhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3JvbWFuLW51bWVyYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksYUFBdUIsQ0FBQztBQUM1QixNQUFNLHlCQUF5QixHQUM3QixrREFBa0QsQ0FBQztBQUNyRCxNQUFNLHdCQUF3QixHQUM1QiwyR0FBMkcsQ0FBQztBQUM5RyxNQUFNLHlCQUF5QixHQUFHLGdDQUFnQyxDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDckUsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELElBQUksSUFBSSxFQUFFO1FBQ1IsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUN0QyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLElBQUksT0FBTyxFQUFFLENBQ3hDLENBQUM7S0FDSDtTQUFNO1FBQ0wsTUFBTSxLQUFLLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1QztZQUNELE9BQU8sYUFBYTtpQkFDakIsS0FBSyxDQUNKLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNyQztpQkFDQSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDakQ7S0FDRjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDdkQsSUFBSSxDQUF5QixDQUFDO0lBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixHQUFHO1FBQ0QsQ0FBQyxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRTtZQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7S0FDRixRQUFRLENBQUMsRUFBRTtJQUNaLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLGtCQUFrQjtBQUNsQixNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDMUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDL0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixFQUFFO1lBQzlDLE9BQU8sTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQztnQkFDaEIsWUFBWSxJQUFJLE1BQU0sQ0FBQzthQUN4QjtTQUNGO1FBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCByb21hbk51bWVyYWxzOiBzdHJpbmdbXTtcclxuY29uc3Qgc2luZ2xlUm9tYW5OdW1lcmFsUGF0dGVybiA9XHJcbiAgL1h7MSwzfShJWHxJVnxWP0l7MCwzfSl8KElYfElWfFZJezAsM30pfChJezEsM30pL2c7XHJcbmNvbnN0IHJvbWFuTnVtZXJhbHNMaXN0UGF0dGVybiA9XHJcbiAgLyhYezEsM30oSVh8SVZ8Vj9JezAsM30pfChJWHxJVnxWSXswLDN9KXwoSXsxLDN9KSkoLCA/KFh7MSwzfShJWHxJVnxWP0l7MCwzfSl8KElYfElWfFZJezAsM30pfChJezEsM30pKSkrJC87XHJcbmNvbnN0IHJvbWFuTnVtZXJhbHNSYW5nZVBhdHRlcm4gPSAvKFtJVlhMQ0RNXSspID8tID8oW0lWWExDRE1dKykkLztcclxuZXhwb3J0IGNvbnN0IHNwbGl0U3RyZWV0VmlhUm9tYW5OdW1lcmFscyA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xyXG4gIGNvbnN0IGxpc3QgPSByb21hbk51bWVyYWxzTGlzdFBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgaWYgKGxpc3QpIHtcclxuICAgIGNvbnN0IHN0cmVldE5hbWUgPSBpbnB1dC5zdWJzdHJpbmcoMCwgaW5wdXQuaW5kZXhPZihsaXN0WzBdKSkudHJpbSgpO1xyXG4gICAgcmV0dXJuIGV4dHJhY3RSb21hbk51bWVyYWxzKGxpc3RbMF0pLm1hcChcclxuICAgICAgKG51bWVyYWwpID0+IGAke3N0cmVldE5hbWV9ICR7bnVtZXJhbH1gXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCByYW5nZSA9IHJvbWFuTnVtZXJhbHNSYW5nZVBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgICBpZiAocmFuZ2UpIHtcclxuICAgICAgY29uc3Qgc3RyZWV0TmFtZSA9IGlucHV0LnN1YnN0cmluZygwLCBpbnB1dC5pbmRleE9mKHJhbmdlWzBdKSkudHJpbSgpO1xyXG4gICAgICBjb25zdCBib3VuZHMgPSBleHRyYWN0Um9tYW5OdW1lcmFscyhyYW5nZVswXSk7XHJcbiAgICAgIGlmICghcm9tYW5OdW1lcmFscykge1xyXG4gICAgICAgIHJvbWFuTnVtZXJhbHMgPSBnZW5lcmF0ZVJvbWFuTnVtZXJhbHMoMTAwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcm9tYW5OdW1lcmFsc1xyXG4gICAgICAgIC5zbGljZShcclxuICAgICAgICAgIHJvbWFuTnVtZXJhbHMuaW5kZXhPZihib3VuZHNbMF0pLFxyXG4gICAgICAgICAgcm9tYW5OdW1lcmFscy5pbmRleE9mKGJvdW5kc1sxXSkgKyAxXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5tYXAoKG51bWVyYWwpID0+IGAke3N0cmVldE5hbWV9ICR7bnVtZXJhbH1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIFtpbnB1dF07XHJcbn07XHJcblxyXG5jb25zdCBleHRyYWN0Um9tYW5OdW1lcmFscyA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xyXG4gIGxldCBuOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gIGNvbnN0IG51bWVyYWxzID0gW107XHJcbiAgZG8ge1xyXG4gICAgbiA9IHNpbmdsZVJvbWFuTnVtZXJhbFBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgICBpZiAobikge1xyXG4gICAgICBudW1lcmFscy5wdXNoKG5bMF0pO1xyXG4gICAgfVxyXG4gIH0gd2hpbGUgKG4pO1xyXG4gIHJldHVybiBudW1lcmFscztcclxufTtcclxuXHJcbi8vIHNvdXJjZTogQ2hhdEdQVFxyXG5jb25zdCBnZW5lcmF0ZVJvbWFuTnVtZXJhbHMgPSAobjogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3Qgcm9tYW5OdW1lcmFscyA9IFtdO1xyXG4gIGNvbnN0IHJvbWFuTnVtZXJhbHNNYXAgPSBuZXcgTWFwKFtcclxuICAgIFsxMDAwLCBcIk1cIl0sXHJcbiAgICBbOTAwLCBcIkNNXCJdLFxyXG4gICAgWzUwMCwgXCJEXCJdLFxyXG4gICAgWzQwMCwgXCJDRFwiXSxcclxuICAgIFsxMDAsIFwiQ1wiXSxcclxuICAgIFs5MCwgXCJYQ1wiXSxcclxuICAgIFs1MCwgXCJMXCJdLFxyXG4gICAgWzQwLCBcIlhMXCJdLFxyXG4gICAgWzEwLCBcIlhcIl0sXHJcbiAgICBbOSwgXCJJWFwiXSxcclxuICAgIFs1LCBcIlZcIl0sXHJcbiAgICBbNCwgXCJJVlwiXSxcclxuICAgIFsxLCBcIklcIl0sXHJcbiAgXSk7XHJcblxyXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IG47IGkrKykge1xyXG4gICAgbGV0IG51bWJlciA9IGk7XHJcbiAgICBsZXQgcm9tYW5OdW1lcmFsID0gXCJcIjtcclxuICAgIGZvciAoY29uc3QgW3ZhbHVlLCBzeW1ib2xdIG9mIHJvbWFuTnVtZXJhbHNNYXApIHtcclxuICAgICAgd2hpbGUgKG51bWJlciA+PSB2YWx1ZSkge1xyXG4gICAgICAgIG51bWJlciAtPSB2YWx1ZTtcclxuICAgICAgICByb21hbk51bWVyYWwgKz0gc3ltYm9sO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByb21hbk51bWVyYWxzLnB1c2gocm9tYW5OdW1lcmFsKTtcclxuICB9XHJcblxyXG4gIHJldHVybiByb21hbk51bWVyYWxzO1xyXG59O1xyXG4iXX0=