text-to-map 1.1.45 → 1.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +69 -69
  3. package/dist/bin/address-points.d.ts +1 -1
  4. package/dist/bin/address-points.js +16 -16
  5. package/dist/bin/cities.d.ts +1 -1
  6. package/dist/bin/cities.js +10 -10
  7. package/dist/bin/clear-all.d.ts +1 -1
  8. package/dist/bin/clear-all.js +13 -13
  9. package/dist/bin/constants.d.ts +2 -2
  10. package/dist/bin/constants.js +4 -4
  11. package/dist/bin/generate-syntax-diagrams.d.ts +1 -1
  12. package/dist/bin/generate-syntax-diagrams.js +20 -20
  13. package/dist/bin/init-db.d.ts +1 -1
  14. package/dist/bin/init-db.js +8 -8
  15. package/dist/bin/knex.d.ts +1 -1
  16. package/dist/bin/knex.js +10 -10
  17. package/dist/bin/parse-ordinance.d.ts +1 -1
  18. package/dist/bin/parse-ordinance.js +74 -74
  19. package/dist/bin/polygons.d.ts +1 -1
  20. package/dist/bin/polygons.js +27 -27
  21. package/dist/bin/regions.d.ts +1 -1
  22. package/dist/bin/regions.js +10 -10
  23. package/dist/bin/schools.d.ts +1 -1
  24. package/dist/bin/schools.js +10 -10
  25. package/dist/bin/streets.d.ts +1 -1
  26. package/dist/bin/streets.js +19 -19
  27. package/dist/bin/sync-all.d.ts +1 -1
  28. package/dist/bin/sync-all.js +4 -4
  29. package/dist/db/address-points.d.ts +59 -59
  30. package/dist/db/address-points.js +401 -399
  31. package/dist/db/cities.d.ts +7 -7
  32. package/dist/db/cities.js +95 -95
  33. package/dist/db/db.d.ts +37 -37
  34. package/dist/db/db.js +191 -191
  35. package/dist/db/founders.d.ts +14 -14
  36. package/dist/db/founders.js +461 -461
  37. package/dist/db/meta.d.ts +4 -4
  38. package/dist/db/meta.js +26 -26
  39. package/dist/db/migrations/20230704125715_initial.js +304 -304
  40. package/dist/db/migrations/20230731232915_city_positions.js +13 -13
  41. package/dist/db/migrations/20240106224603_city_polygon.js +11 -11
  42. package/dist/db/migrations/20240320200534_district_polygon.js +11 -11
  43. package/dist/db/migrations/20250316162700_kindergartens.js +12 -12
  44. package/dist/db/regions.d.ts +31 -31
  45. package/dist/db/regions.js +81 -81
  46. package/dist/db/schools.d.ts +7 -7
  47. package/dist/db/schools.js +95 -95
  48. package/dist/db/street-sync.d.ts +6 -6
  49. package/dist/db/street-sync.js +22 -22
  50. package/dist/db/sync-log.d.ts +9 -9
  51. package/dist/db/sync-log.js +66 -66
  52. package/dist/db/types.d.ts +59 -59
  53. package/dist/db/types.js +26 -26
  54. package/dist/index.d.ts +23 -23
  55. package/dist/index.js +32 -32
  56. package/dist/open-data-sync/address-points.d.ts +2 -2
  57. package/dist/open-data-sync/address-points.js +68 -68
  58. package/dist/open-data-sync/cities.d.ts +2 -2
  59. package/dist/open-data-sync/cities.js +32 -32
  60. package/dist/open-data-sync/common.d.ts +2 -2
  61. package/dist/open-data-sync/common.js +22 -22
  62. package/dist/open-data-sync/regions.d.ts +2 -2
  63. package/dist/open-data-sync/regions.js +37 -37
  64. package/dist/open-data-sync/schools.d.ts +3 -3
  65. package/dist/open-data-sync/schools.js +207 -207
  66. package/dist/open-data-sync/streets.d.ts +2 -2
  67. package/dist/open-data-sync/streets.js +132 -132
  68. package/dist/smd-to-csv/json-to-csv.d.ts +1 -1
  69. package/dist/smd-to-csv/json-to-csv.js +154 -154
  70. package/dist/smd-to-csv/ordinance-to-csv-rules.d.ts +1 -1
  71. package/dist/smd-to-csv/ordinance-to-csv-rules.js +23 -23
  72. package/dist/smd-to-csv/txt-to-json.d.ts +1 -1
  73. package/dist/smd-to-csv/txt-to-json.js +92 -92
  74. package/dist/souradnice.csv +6260 -6260
  75. package/dist/street-markdown/municipality.d.ts +11 -11
  76. package/dist/street-markdown/municipality.js +116 -116
  77. package/dist/street-markdown/polygons.d.ts +7 -7
  78. package/dist/street-markdown/polygons.js +261 -261
  79. package/dist/street-markdown/roman-numerals.d.ts +1 -1
  80. package/dist/street-markdown/roman-numerals.js +68 -68
  81. package/dist/street-markdown/smd-line-parser.d.ts +4 -4
  82. package/dist/street-markdown/smd-line-parser.js +40 -40
  83. package/dist/street-markdown/smd-parser.d.ts +23 -23
  84. package/dist/street-markdown/smd-parser.js +393 -393
  85. package/dist/street-markdown/smd.d.ts +24 -24
  86. package/dist/street-markdown/smd.js +440 -440
  87. package/dist/street-markdown/token-definition.d.ts +25 -25
  88. package/dist/street-markdown/token-definition.js +168 -168
  89. package/dist/street-markdown/types.d.ts +148 -148
  90. package/dist/street-markdown/types.js +13 -13
  91. package/dist/utils/atom.d.ts +2 -2
  92. package/dist/utils/atom.js +57 -57
  93. package/dist/utils/helpers.d.ts +28 -28
  94. package/dist/utils/helpers.js +176 -176
  95. package/dist/utils/jtsk2wgs84.d.ts +17 -17
  96. package/dist/utils/jtsk2wgs84.js +82 -82
  97. package/package.json +109 -109
@@ -1 +1 @@
1
- export declare const splitStreetViaRomanNumerals: (input: string) => string[];
1
+ export declare const splitStreetViaRomanNumerals: (input: string) => string[];
@@ -1,68 +1,68 @@
1
- let romanNumerals;
2
- const singleRomanNumeralPattern = /X{1,3}(IX|IV|V?I{0,3})|(IX|IV|VI{0,3})|(I{1,3})/g;
3
- 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})))+$/;
4
- const romanNumeralsRangePattern = /([IVXLCDM]+) ?- ?([IVXLCDM]+)$/;
5
- export const splitStreetViaRomanNumerals = (input) => {
6
- const list = romanNumeralsListPattern.exec(input);
7
- if (list) {
8
- const streetName = input.substring(0, input.indexOf(list[0])).trim();
9
- return extractRomanNumerals(list[0]).map((numeral) => `${streetName} ${numeral}`);
10
- }
11
- else {
12
- const range = romanNumeralsRangePattern.exec(input);
13
- if (range) {
14
- const streetName = input.substring(0, input.indexOf(range[0])).trim();
15
- const bounds = extractRomanNumerals(range[0]);
16
- if (!romanNumerals) {
17
- romanNumerals = generateRomanNumerals(100);
18
- }
19
- return romanNumerals
20
- .slice(romanNumerals.indexOf(bounds[0]), romanNumerals.indexOf(bounds[1]) + 1)
21
- .map((numeral) => `${streetName} ${numeral}`);
22
- }
23
- }
24
- return [input];
25
- };
26
- const extractRomanNumerals = (input) => {
27
- let n;
28
- const numerals = [];
29
- do {
30
- n = singleRomanNumeralPattern.exec(input);
31
- if (n) {
32
- numerals.push(n[0]);
33
- }
34
- } while (n);
35
- return numerals;
36
- };
37
- // source: ChatGPT
38
- const generateRomanNumerals = (n) => {
39
- const romanNumerals = [];
40
- const romanNumeralsMap = new Map([
41
- [1000, "M"],
42
- [900, "CM"],
43
- [500, "D"],
44
- [400, "CD"],
45
- [100, "C"],
46
- [90, "XC"],
47
- [50, "L"],
48
- [40, "XL"],
49
- [10, "X"],
50
- [9, "IX"],
51
- [5, "V"],
52
- [4, "IV"],
53
- [1, "I"],
54
- ]);
55
- for (let i = 1; i <= n; i++) {
56
- let number = i;
57
- let romanNumeral = "";
58
- for (const [value, symbol] of romanNumeralsMap) {
59
- while (number >= value) {
60
- number -= value;
61
- romanNumeral += symbol;
62
- }
63
- }
64
- romanNumerals.push(romanNumeral);
65
- }
66
- return romanNumerals;
67
- };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9tYW4tbnVtZXJhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3JvbWFuLW51bWVyYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksYUFBdUIsQ0FBQztBQUM1QixNQUFNLHlCQUF5QixHQUM3QixrREFBa0QsQ0FBQztBQUNyRCxNQUFNLHdCQUF3QixHQUM1QiwyR0FBMkcsQ0FBQztBQUM5RyxNQUFNLHlCQUF5QixHQUFHLGdDQUFnQyxDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDckUsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELElBQUksSUFBSSxFQUFFO1FBQ1IsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUN0QyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLElBQUksT0FBTyxFQUFFLENBQ3hDLENBQUM7S0FDSDtTQUFNO1FBQ0wsTUFBTSxLQUFLLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1QztZQUNELE9BQU8sYUFBYTtpQkFDakIsS0FBSyxDQUNKLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNyQztpQkFDQSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDakQ7S0FDRjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDdkQsSUFBSSxDQUF5QixDQUFDO0lBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixHQUFHO1FBQ0QsQ0FBQyxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRTtZQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7S0FDRixRQUFRLENBQUMsRUFBRTtJQUNaLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLGtCQUFrQjtBQUNsQixNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDMUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDL0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixFQUFFO1lBQzlDLE9BQU8sTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQztnQkFDaEIsWUFBWSxJQUFJLE1BQU0sQ0FBQzthQUN4QjtTQUNGO1FBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCByb21hbk51bWVyYWxzOiBzdHJpbmdbXTtcclxuY29uc3Qgc2luZ2xlUm9tYW5OdW1lcmFsUGF0dGVybiA9XHJcbiAgL1h7MSwzfShJWHxJVnxWP0l7MCwzfSl8KElYfElWfFZJezAsM30pfChJezEsM30pL2c7XHJcbmNvbnN0IHJvbWFuTnVtZXJhbHNMaXN0UGF0dGVybiA9XHJcbiAgLyhYezEsM30oSVh8SVZ8Vj9JezAsM30pfChJWHxJVnxWSXswLDN9KXwoSXsxLDN9KSkoLCA/KFh7MSwzfShJWHxJVnxWP0l7MCwzfSl8KElYfElWfFZJezAsM30pfChJezEsM30pKSkrJC87XHJcbmNvbnN0IHJvbWFuTnVtZXJhbHNSYW5nZVBhdHRlcm4gPSAvKFtJVlhMQ0RNXSspID8tID8oW0lWWExDRE1dKykkLztcclxuZXhwb3J0IGNvbnN0IHNwbGl0U3RyZWV0VmlhUm9tYW5OdW1lcmFscyA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xyXG4gIGNvbnN0IGxpc3QgPSByb21hbk51bWVyYWxzTGlzdFBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgaWYgKGxpc3QpIHtcclxuICAgIGNvbnN0IHN0cmVldE5hbWUgPSBpbnB1dC5zdWJzdHJpbmcoMCwgaW5wdXQuaW5kZXhPZihsaXN0WzBdKSkudHJpbSgpO1xyXG4gICAgcmV0dXJuIGV4dHJhY3RSb21hbk51bWVyYWxzKGxpc3RbMF0pLm1hcChcclxuICAgICAgKG51bWVyYWwpID0+IGAke3N0cmVldE5hbWV9ICR7bnVtZXJhbH1gXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCByYW5nZSA9IHJvbWFuTnVtZXJhbHNSYW5nZVBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgICBpZiAocmFuZ2UpIHtcclxuICAgICAgY29uc3Qgc3RyZWV0TmFtZSA9IGlucHV0LnN1YnN0cmluZygwLCBpbnB1dC5pbmRleE9mKHJhbmdlWzBdKSkudHJpbSgpO1xyXG4gICAgICBjb25zdCBib3VuZHMgPSBleHRyYWN0Um9tYW5OdW1lcmFscyhyYW5nZVswXSk7XHJcbiAgICAgIGlmICghcm9tYW5OdW1lcmFscykge1xyXG4gICAgICAgIHJvbWFuTnVtZXJhbHMgPSBnZW5lcmF0ZVJvbWFuTnVtZXJhbHMoMTAwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcm9tYW5OdW1lcmFsc1xyXG4gICAgICAgIC5zbGljZShcclxuICAgICAgICAgIHJvbWFuTnVtZXJhbHMuaW5kZXhPZihib3VuZHNbMF0pLFxyXG4gICAgICAgICAgcm9tYW5OdW1lcmFscy5pbmRleE9mKGJvdW5kc1sxXSkgKyAxXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5tYXAoKG51bWVyYWwpID0+IGAke3N0cmVldE5hbWV9ICR7bnVtZXJhbH1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIFtpbnB1dF07XHJcbn07XHJcblxyXG5jb25zdCBleHRyYWN0Um9tYW5OdW1lcmFscyA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xyXG4gIGxldCBuOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gIGNvbnN0IG51bWVyYWxzID0gW107XHJcbiAgZG8ge1xyXG4gICAgbiA9IHNpbmdsZVJvbWFuTnVtZXJhbFBhdHRlcm4uZXhlYyhpbnB1dCk7XHJcbiAgICBpZiAobikge1xyXG4gICAgICBudW1lcmFscy5wdXNoKG5bMF0pO1xyXG4gICAgfVxyXG4gIH0gd2hpbGUgKG4pO1xyXG4gIHJldHVybiBudW1lcmFscztcclxufTtcclxuXHJcbi8vIHNvdXJjZTogQ2hhdEdQVFxyXG5jb25zdCBnZW5lcmF0ZVJvbWFuTnVtZXJhbHMgPSAobjogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3Qgcm9tYW5OdW1lcmFscyA9IFtdO1xyXG4gIGNvbnN0IHJvbWFuTnVtZXJhbHNNYXAgPSBuZXcgTWFwKFtcclxuICAgIFsxMDAwLCBcIk1cIl0sXHJcbiAgICBbOTAwLCBcIkNNXCJdLFxyXG4gICAgWzUwMCwgXCJEXCJdLFxyXG4gICAgWzQwMCwgXCJDRFwiXSxcclxuICAgIFsxMDAsIFwiQ1wiXSxcclxuICAgIFs5MCwgXCJYQ1wiXSxcclxuICAgIFs1MCwgXCJMXCJdLFxyXG4gICAgWzQwLCBcIlhMXCJdLFxyXG4gICAgWzEwLCBcIlhcIl0sXHJcbiAgICBbOSwgXCJJWFwiXSxcclxuICAgIFs1LCBcIlZcIl0sXHJcbiAgICBbNCwgXCJJVlwiXSxcclxuICAgIFsxLCBcIklcIl0sXHJcbiAgXSk7XHJcblxyXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IG47IGkrKykge1xyXG4gICAgbGV0IG51bWJlciA9IGk7XHJcbiAgICBsZXQgcm9tYW5OdW1lcmFsID0gXCJcIjtcclxuICAgIGZvciAoY29uc3QgW3ZhbHVlLCBzeW1ib2xdIG9mIHJvbWFuTnVtZXJhbHNNYXApIHtcclxuICAgICAgd2hpbGUgKG51bWJlciA+PSB2YWx1ZSkge1xyXG4gICAgICAgIG51bWJlciAtPSB2YWx1ZTtcclxuICAgICAgICByb21hbk51bWVyYWwgKz0gc3ltYm9sO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByb21hbk51bWVyYWxzLnB1c2gocm9tYW5OdW1lcmFsKTtcclxuICB9XHJcblxyXG4gIHJldHVybiByb21hbk51bWVyYWxzO1xyXG59O1xyXG4iXX0=
1
+ let romanNumerals;
2
+ const singleRomanNumeralPattern = /X{1,3}(IX|IV|V?I{0,3})|(IX|IV|VI{0,3})|(I{1,3})/g;
3
+ 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})))+$/;
4
+ const romanNumeralsRangePattern = /([IVXLCDM]+) ?- ?([IVXLCDM]+)$/;
5
+ export const splitStreetViaRomanNumerals = (input) => {
6
+ const list = romanNumeralsListPattern.exec(input);
7
+ if (list) {
8
+ const streetName = input.substring(0, input.indexOf(list[0])).trim();
9
+ return extractRomanNumerals(list[0]).map((numeral) => `${streetName} ${numeral}`);
10
+ }
11
+ else {
12
+ const range = romanNumeralsRangePattern.exec(input);
13
+ if (range) {
14
+ const streetName = input.substring(0, input.indexOf(range[0])).trim();
15
+ const bounds = extractRomanNumerals(range[0]);
16
+ if (!romanNumerals) {
17
+ romanNumerals = generateRomanNumerals(100);
18
+ }
19
+ return romanNumerals
20
+ .slice(romanNumerals.indexOf(bounds[0]), romanNumerals.indexOf(bounds[1]) + 1)
21
+ .map((numeral) => `${streetName} ${numeral}`);
22
+ }
23
+ }
24
+ return [input];
25
+ };
26
+ const extractRomanNumerals = (input) => {
27
+ let n;
28
+ const numerals = [];
29
+ do {
30
+ n = singleRomanNumeralPattern.exec(input);
31
+ if (n) {
32
+ numerals.push(n[0]);
33
+ }
34
+ } while (n);
35
+ return numerals;
36
+ };
37
+ // source: ChatGPT
38
+ const generateRomanNumerals = (n) => {
39
+ const romanNumerals = [];
40
+ const romanNumeralsMap = new Map([
41
+ [1000, "M"],
42
+ [900, "CM"],
43
+ [500, "D"],
44
+ [400, "CD"],
45
+ [100, "C"],
46
+ [90, "XC"],
47
+ [50, "L"],
48
+ [40, "XL"],
49
+ [10, "X"],
50
+ [9, "IX"],
51
+ [5, "V"],
52
+ [4, "IV"],
53
+ [1, "I"],
54
+ ]);
55
+ for (let i = 1; i <= n; i++) {
56
+ let number = i;
57
+ let romanNumeral = "";
58
+ for (const [value, symbol] of romanNumeralsMap) {
59
+ while (number >= value) {
60
+ number -= value;
61
+ romanNumeral += symbol;
62
+ }
63
+ }
64
+ romanNumerals.push(romanNumeral);
65
+ }
66
+ return romanNumerals;
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9tYW4tbnVtZXJhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWV0LW1hcmtkb3duL3JvbWFuLW51bWVyYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksYUFBdUIsQ0FBQztBQUM1QixNQUFNLHlCQUF5QixHQUM3QixrREFBa0QsQ0FBQztBQUNyRCxNQUFNLHdCQUF3QixHQUM1QiwyR0FBMkcsQ0FBQztBQUM5RyxNQUFNLHlCQUF5QixHQUFHLGdDQUFnQyxDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDckUsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELElBQUksSUFBSSxFQUFFO1FBQ1IsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUN0QyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLElBQUksT0FBTyxFQUFFLENBQ3hDLENBQUM7S0FDSDtTQUFNO1FBQ0wsTUFBTSxLQUFLLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1QztZQUNELE9BQU8sYUFBYTtpQkFDakIsS0FBSyxDQUNKLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNyQztpQkFDQSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDakQ7S0FDRjtJQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBYSxFQUFZLEVBQUU7SUFDdkQsSUFBSSxDQUF5QixDQUFDO0lBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixHQUFHO1FBQ0QsQ0FBQyxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRTtZQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7S0FDRixRQUFRLENBQUMsRUFBRTtJQUNaLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLGtCQUFrQjtBQUNsQixNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDMUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDL0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixFQUFFO1lBQzlDLE9BQU8sTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQztnQkFDaEIsWUFBWSxJQUFJLE1BQU0sQ0FBQzthQUN4QjtTQUNGO1FBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCByb21hbk51bWVyYWxzOiBzdHJpbmdbXTtcbmNvbnN0IHNpbmdsZVJvbWFuTnVtZXJhbFBhdHRlcm4gPVxuICAvWHsxLDN9KElYfElWfFY/SXswLDN9KXwoSVh8SVZ8Vkl7MCwzfSl8KEl7MSwzfSkvZztcbmNvbnN0IHJvbWFuTnVtZXJhbHNMaXN0UGF0dGVybiA9XG4gIC8oWHsxLDN9KElYfElWfFY/SXswLDN9KXwoSVh8SVZ8Vkl7MCwzfSl8KEl7MSwzfSkpKCwgPyhYezEsM30oSVh8SVZ8Vj9JezAsM30pfChJWHxJVnxWSXswLDN9KXwoSXsxLDN9KSkpKyQvO1xuY29uc3Qgcm9tYW5OdW1lcmFsc1JhbmdlUGF0dGVybiA9IC8oW0lWWExDRE1dKykgPy0gPyhbSVZYTENETV0rKSQvO1xuZXhwb3J0IGNvbnN0IHNwbGl0U3RyZWV0VmlhUm9tYW5OdW1lcmFscyA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBsaXN0ID0gcm9tYW5OdW1lcmFsc0xpc3RQYXR0ZXJuLmV4ZWMoaW5wdXQpO1xuICBpZiAobGlzdCkge1xuICAgIGNvbnN0IHN0cmVldE5hbWUgPSBpbnB1dC5zdWJzdHJpbmcoMCwgaW5wdXQuaW5kZXhPZihsaXN0WzBdKSkudHJpbSgpO1xuICAgIHJldHVybiBleHRyYWN0Um9tYW5OdW1lcmFscyhsaXN0WzBdKS5tYXAoXG4gICAgICAobnVtZXJhbCkgPT4gYCR7c3RyZWV0TmFtZX0gJHtudW1lcmFsfWBcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJhbmdlID0gcm9tYW5OdW1lcmFsc1JhbmdlUGF0dGVybi5leGVjKGlucHV0KTtcbiAgICBpZiAocmFuZ2UpIHtcbiAgICAgIGNvbnN0IHN0cmVldE5hbWUgPSBpbnB1dC5zdWJzdHJpbmcoMCwgaW5wdXQuaW5kZXhPZihyYW5nZVswXSkpLnRyaW0oKTtcbiAgICAgIGNvbnN0IGJvdW5kcyA9IGV4dHJhY3RSb21hbk51bWVyYWxzKHJhbmdlWzBdKTtcbiAgICAgIGlmICghcm9tYW5OdW1lcmFscykge1xuICAgICAgICByb21hbk51bWVyYWxzID0gZ2VuZXJhdGVSb21hbk51bWVyYWxzKDEwMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcm9tYW5OdW1lcmFsc1xuICAgICAgICAuc2xpY2UoXG4gICAgICAgICAgcm9tYW5OdW1lcmFscy5pbmRleE9mKGJvdW5kc1swXSksXG4gICAgICAgICAgcm9tYW5OdW1lcmFscy5pbmRleE9mKGJvdW5kc1sxXSkgKyAxXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgobnVtZXJhbCkgPT4gYCR7c3RyZWV0TmFtZX0gJHtudW1lcmFsfWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2lucHV0XTtcbn07XG5cbmNvbnN0IGV4dHJhY3RSb21hbk51bWVyYWxzID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGxldCBuOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICBjb25zdCBudW1lcmFscyA9IFtdO1xuICBkbyB7XG4gICAgbiA9IHNpbmdsZVJvbWFuTnVtZXJhbFBhdHRlcm4uZXhlYyhpbnB1dCk7XG4gICAgaWYgKG4pIHtcbiAgICAgIG51bWVyYWxzLnB1c2goblswXSk7XG4gICAgfVxuICB9IHdoaWxlIChuKTtcbiAgcmV0dXJuIG51bWVyYWxzO1xufTtcblxuLy8gc291cmNlOiBDaGF0R1BUXG5jb25zdCBnZW5lcmF0ZVJvbWFuTnVtZXJhbHMgPSAobjogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHJvbWFuTnVtZXJhbHMgPSBbXTtcbiAgY29uc3Qgcm9tYW5OdW1lcmFsc01hcCA9IG5ldyBNYXAoW1xuICAgIFsxMDAwLCBcIk1cIl0sXG4gICAgWzkwMCwgXCJDTVwiXSxcbiAgICBbNTAwLCBcIkRcIl0sXG4gICAgWzQwMCwgXCJDRFwiXSxcbiAgICBbMTAwLCBcIkNcIl0sXG4gICAgWzkwLCBcIlhDXCJdLFxuICAgIFs1MCwgXCJMXCJdLFxuICAgIFs0MCwgXCJYTFwiXSxcbiAgICBbMTAsIFwiWFwiXSxcbiAgICBbOSwgXCJJWFwiXSxcbiAgICBbNSwgXCJWXCJdLFxuICAgIFs0LCBcIklWXCJdLFxuICAgIFsxLCBcIklcIl0sXG4gIF0pO1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IG47IGkrKykge1xuICAgIGxldCBudW1iZXIgPSBpO1xuICAgIGxldCByb21hbk51bWVyYWwgPSBcIlwiO1xuICAgIGZvciAoY29uc3QgW3ZhbHVlLCBzeW1ib2xdIG9mIHJvbWFuTnVtZXJhbHNNYXApIHtcbiAgICAgIHdoaWxlIChudW1iZXIgPj0gdmFsdWUpIHtcbiAgICAgICAgbnVtYmVyIC09IHZhbHVlO1xuICAgICAgICByb21hbk51bWVyYWwgKz0gc3ltYm9sO1xuICAgICAgfVxuICAgIH1cbiAgICByb21hbk51bWVyYWxzLnB1c2gocm9tYW5OdW1lcmFsKTtcbiAgfVxuXG4gIHJldHVybiByb21hbk51bWVyYWxzO1xufTtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { SmdParser } from "./smd-parser";
2
- import { ProcessedSmdLines } from "./types";
3
- export declare const smdParser: SmdParser;
4
- export declare const parseLine: (text: string, showDebug?: boolean) => ProcessedSmdLines;
1
+ import { SmdParser } from "./smd-parser";
2
+ import { ProcessedSmdLines } from "./types";
3
+ export declare const smdParser: SmdParser;
4
+ export declare const parseLine: (text: string, showDebug?: boolean) => ProcessedSmdLines;
@@ -1,40 +1,40 @@
1
- import { Lexer } from "chevrotain";
2
- import { SmdParser } from "./smd-parser";
3
- import { tokenVocabulary, smdTokens, resetTokenState, prepareLine, } from "./token-definition";
4
- const printLexingResultInfo = (lexingResult) => {
5
- const tokens = lexingResult.tokens.map((token) => "'" + token.image + "' (" + token.tokenType.name + ")");
6
- console.error(tokens);
7
- };
8
- const smdLexer = new Lexer(smdTokens, { positionTracking: "onlyOffset" });
9
- export const smdParser = new SmdParser(tokenVocabulary);
10
- export const parseLine = (text, showDebug = false) => {
11
- resetTokenState(); // this is needed to reset the token state between lines
12
- const errors = [];
13
- const lexingResult = smdLexer.tokenize(prepareLine(text));
14
- if (lexingResult.errors.length > 0) {
15
- errors.push(...lexingResult.errors.map((error) => ({
16
- message: `Neočekávaný znak na tomto místě.`,
17
- startOffset: error.offset,
18
- endOffset: error.offset + error.length + 1,
19
- })));
20
- if (showDebug) {
21
- printLexingResultInfo(lexingResult);
22
- }
23
- return { smdLines: [], errors };
24
- }
25
- smdParser.input = lexingResult.tokens;
26
- const smdLines = smdParser.street();
27
- if (smdParser.errors.length > 0) {
28
- errors.push(...smdParser.errors.map((error) => ({
29
- message: `Nesprávný zápis pravidla - nevynechali jste něco?`,
30
- startOffset: error.token.startOffset,
31
- endOffset: error.token.endOffset ?? text.length,
32
- })));
33
- if (showDebug) {
34
- printLexingResultInfo(lexingResult);
35
- }
36
- return { smdLines: [], errors };
37
- }
38
- return { smdLines, errors };
39
- };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLWxpbmUtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQtbGluZS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxHQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFlBQTJCLEVBQUUsRUFBRTtJQUM1RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDcEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxHQUFHLENBQ2xFLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDMUUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixJQUFZLEVBQ1osU0FBUyxHQUFHLEtBQUssRUFDRSxFQUFFO0lBQ3JCLGVBQWUsRUFBRSxDQUFDLENBQUMsd0RBQXdEO0lBQzNFLE1BQU0sTUFBTSxHQUFlLEVBQUUsQ0FBQztJQUU5QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTFELElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyQyxPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTTtZQUN6QixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7U0FDM0MsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqQztJQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFcEMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FDVCxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVztZQUNwQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU07U0FDaEQsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqQztJQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUxleGluZ1Jlc3VsdCwgTGV4ZXIgfSBmcm9tIFwiY2hldnJvdGFpblwiO1xyXG5pbXBvcnQgeyBTbWRQYXJzZXIgfSBmcm9tIFwiLi9zbWQtcGFyc2VyXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gIHRva2VuVm9jYWJ1bGFyeSxcclxuICBzbWRUb2tlbnMsXHJcbiAgcmVzZXRUb2tlblN0YXRlLFxyXG4gIHByZXBhcmVMaW5lLFxyXG59IGZyb20gXCIuL3Rva2VuLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgUHJvY2Vzc2VkU21kTGluZXMsIFNtZEVycm9yIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmNvbnN0IHByaW50TGV4aW5nUmVzdWx0SW5mbyA9IChsZXhpbmdSZXN1bHQ6IElMZXhpbmdSZXN1bHQpID0+IHtcclxuICBjb25zdCB0b2tlbnMgPSBsZXhpbmdSZXN1bHQudG9rZW5zLm1hcChcclxuICAgICh0b2tlbikgPT4gXCInXCIgKyB0b2tlbi5pbWFnZSArIFwiJyAoXCIgKyB0b2tlbi50b2tlblR5cGUubmFtZSArIFwiKVwiXHJcbiAgKTtcclxuICBjb25zb2xlLmVycm9yKHRva2Vucyk7XHJcbn07XHJcblxyXG5jb25zdCBzbWRMZXhlciA9IG5ldyBMZXhlcihzbWRUb2tlbnMsIHsgcG9zaXRpb25UcmFja2luZzogXCJvbmx5T2Zmc2V0XCIgfSk7XHJcbmV4cG9ydCBjb25zdCBzbWRQYXJzZXIgPSBuZXcgU21kUGFyc2VyKHRva2VuVm9jYWJ1bGFyeSk7XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VMaW5lID0gKFxyXG4gIHRleHQ6IHN0cmluZyxcclxuICBzaG93RGVidWcgPSBmYWxzZVxyXG4pOiBQcm9jZXNzZWRTbWRMaW5lcyA9PiB7XHJcbiAgcmVzZXRUb2tlblN0YXRlKCk7IC8vIHRoaXMgaXMgbmVlZGVkIHRvIHJlc2V0IHRoZSB0b2tlbiBzdGF0ZSBiZXR3ZWVuIGxpbmVzXHJcbiAgY29uc3QgZXJyb3JzOiBTbWRFcnJvcltdID0gW107XHJcblxyXG4gIGNvbnN0IGxleGluZ1Jlc3VsdCA9IHNtZExleGVyLnRva2VuaXplKHByZXBhcmVMaW5lKHRleHQpKTtcclxuXHJcbiAgaWYgKGxleGluZ1Jlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgZXJyb3JzLnB1c2goXHJcbiAgICAgIC4uLmxleGluZ1Jlc3VsdC5lcnJvcnMubWFwKChlcnJvcikgPT4gKHtcclxuICAgICAgICBtZXNzYWdlOiBgTmVvxI1la8OhdmFuw70gem5hayBuYSB0b210byBtw61zdMSbLmAsXHJcbiAgICAgICAgc3RhcnRPZmZzZXQ6IGVycm9yLm9mZnNldCxcclxuICAgICAgICBlbmRPZmZzZXQ6IGVycm9yLm9mZnNldCArIGVycm9yLmxlbmd0aCArIDEsXHJcbiAgICAgIH0pKVxyXG4gICAgKTtcclxuICAgIGlmIChzaG93RGVidWcpIHtcclxuICAgICAgcHJpbnRMZXhpbmdSZXN1bHRJbmZvKGxleGluZ1Jlc3VsdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBzbWRMaW5lczogW10sIGVycm9ycyB9O1xyXG4gIH1cclxuXHJcbiAgc21kUGFyc2VyLmlucHV0ID0gbGV4aW5nUmVzdWx0LnRva2VucztcclxuICBjb25zdCBzbWRMaW5lcyA9IHNtZFBhcnNlci5zdHJlZXQoKTtcclxuXHJcbiAgaWYgKHNtZFBhcnNlci5lcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgZXJyb3JzLnB1c2goXHJcbiAgICAgIC4uLnNtZFBhcnNlci5lcnJvcnMubWFwKChlcnJvcikgPT4gKHtcclxuICAgICAgICBtZXNzYWdlOiBgTmVzcHLDoXZuw70gesOhcGlzIHByYXZpZGxhIC0gbmV2eW5lY2hhbGkganN0ZSBuxJtjbz9gLFxyXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBlcnJvci50b2tlbi5zdGFydE9mZnNldCxcclxuICAgICAgICBlbmRPZmZzZXQ6IGVycm9yLnRva2VuLmVuZE9mZnNldCA/PyB0ZXh0Lmxlbmd0aCxcclxuICAgICAgfSkpXHJcbiAgICApO1xyXG4gICAgaWYgKHNob3dEZWJ1Zykge1xyXG4gICAgICBwcmludExleGluZ1Jlc3VsdEluZm8obGV4aW5nUmVzdWx0KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHNtZExpbmVzOiBbXSwgZXJyb3JzIH07XHJcbiAgfVxyXG5cclxuICByZXR1cm4geyBzbWRMaW5lcywgZXJyb3JzIH07XHJcbn07XHJcbiJdfQ==
1
+ import { Lexer } from "chevrotain";
2
+ import { SmdParser } from "./smd-parser";
3
+ import { tokenVocabulary, smdTokens, resetTokenState, prepareLine, } from "./token-definition";
4
+ const printLexingResultInfo = (lexingResult) => {
5
+ const tokens = lexingResult.tokens.map((token) => "'" + token.image + "' (" + token.tokenType.name + ")");
6
+ console.error(tokens);
7
+ };
8
+ const smdLexer = new Lexer(smdTokens, { positionTracking: "onlyOffset" });
9
+ export const smdParser = new SmdParser(tokenVocabulary);
10
+ export const parseLine = (text, showDebug = false) => {
11
+ resetTokenState(); // this is needed to reset the token state between lines
12
+ const errors = [];
13
+ const lexingResult = smdLexer.tokenize(prepareLine(text));
14
+ if (lexingResult.errors.length > 0) {
15
+ errors.push(...lexingResult.errors.map((error) => ({
16
+ message: `Neočekávaný znak na tomto místě.`,
17
+ startOffset: error.offset,
18
+ endOffset: error.offset + error.length + 1,
19
+ })));
20
+ if (showDebug) {
21
+ printLexingResultInfo(lexingResult);
22
+ }
23
+ return { smdLines: [], errors };
24
+ }
25
+ smdParser.input = lexingResult.tokens;
26
+ const smdLines = smdParser.street();
27
+ if (smdParser.errors.length > 0) {
28
+ errors.push(...smdParser.errors.map((error) => ({
29
+ message: `Nesprávný zápis pravidla - nevynechali jste něco?`,
30
+ startOffset: error.token.startOffset,
31
+ endOffset: error.token.endOffset ?? text.length,
32
+ })));
33
+ if (showDebug) {
34
+ printLexingResultInfo(lexingResult);
35
+ }
36
+ return { smdLines: [], errors };
37
+ }
38
+ return { smdLines, errors };
39
+ };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLWxpbmUtcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQtbGluZS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxHQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFlBQTJCLEVBQUUsRUFBRTtJQUM1RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDcEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxHQUFHLENBQ2xFLENBQUM7SUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDMUUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixJQUFZLEVBQ1osU0FBUyxHQUFHLEtBQUssRUFDRSxFQUFFO0lBQ3JCLGVBQWUsRUFBRSxDQUFDLENBQUMsd0RBQXdEO0lBQzNFLE1BQU0sTUFBTSxHQUFlLEVBQUUsQ0FBQztJQUU5QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTFELElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyQyxPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTTtZQUN6QixTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7U0FDM0MsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqQztJQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFcEMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FDVCxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVztZQUNwQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU07U0FDaEQsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztLQUNqQztJQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUxleGluZ1Jlc3VsdCwgTGV4ZXIgfSBmcm9tIFwiY2hldnJvdGFpblwiO1xuaW1wb3J0IHsgU21kUGFyc2VyIH0gZnJvbSBcIi4vc21kLXBhcnNlclwiO1xuXG5pbXBvcnQge1xuICB0b2tlblZvY2FidWxhcnksXG4gIHNtZFRva2VucyxcbiAgcmVzZXRUb2tlblN0YXRlLFxuICBwcmVwYXJlTGluZSxcbn0gZnJvbSBcIi4vdG9rZW4tZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgUHJvY2Vzc2VkU21kTGluZXMsIFNtZEVycm9yIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuY29uc3QgcHJpbnRMZXhpbmdSZXN1bHRJbmZvID0gKGxleGluZ1Jlc3VsdDogSUxleGluZ1Jlc3VsdCkgPT4ge1xuICBjb25zdCB0b2tlbnMgPSBsZXhpbmdSZXN1bHQudG9rZW5zLm1hcChcbiAgICAodG9rZW4pID0+IFwiJ1wiICsgdG9rZW4uaW1hZ2UgKyBcIicgKFwiICsgdG9rZW4udG9rZW5UeXBlLm5hbWUgKyBcIilcIlxuICApO1xuICBjb25zb2xlLmVycm9yKHRva2Vucyk7XG59O1xuXG5jb25zdCBzbWRMZXhlciA9IG5ldyBMZXhlcihzbWRUb2tlbnMsIHsgcG9zaXRpb25UcmFja2luZzogXCJvbmx5T2Zmc2V0XCIgfSk7XG5leHBvcnQgY29uc3Qgc21kUGFyc2VyID0gbmV3IFNtZFBhcnNlcih0b2tlblZvY2FidWxhcnkpO1xuXG5leHBvcnQgY29uc3QgcGFyc2VMaW5lID0gKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHNob3dEZWJ1ZyA9IGZhbHNlXG4pOiBQcm9jZXNzZWRTbWRMaW5lcyA9PiB7XG4gIHJlc2V0VG9rZW5TdGF0ZSgpOyAvLyB0aGlzIGlzIG5lZWRlZCB0byByZXNldCB0aGUgdG9rZW4gc3RhdGUgYmV0d2VlbiBsaW5lc1xuICBjb25zdCBlcnJvcnM6IFNtZEVycm9yW10gPSBbXTtcblxuICBjb25zdCBsZXhpbmdSZXN1bHQgPSBzbWRMZXhlci50b2tlbml6ZShwcmVwYXJlTGluZSh0ZXh0KSk7XG5cbiAgaWYgKGxleGluZ1Jlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgLi4ubGV4aW5nUmVzdWx0LmVycm9ycy5tYXAoKGVycm9yKSA9PiAoe1xuICAgICAgICBtZXNzYWdlOiBgTmVvxI1la8OhdmFuw70gem5hayBuYSB0b210byBtw61zdMSbLmAsXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBlcnJvci5vZmZzZXQsXG4gICAgICAgIGVuZE9mZnNldDogZXJyb3Iub2Zmc2V0ICsgZXJyb3IubGVuZ3RoICsgMSxcbiAgICAgIH0pKVxuICAgICk7XG4gICAgaWYgKHNob3dEZWJ1Zykge1xuICAgICAgcHJpbnRMZXhpbmdSZXN1bHRJbmZvKGxleGluZ1Jlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiB7IHNtZExpbmVzOiBbXSwgZXJyb3JzIH07XG4gIH1cblxuICBzbWRQYXJzZXIuaW5wdXQgPSBsZXhpbmdSZXN1bHQudG9rZW5zO1xuICBjb25zdCBzbWRMaW5lcyA9IHNtZFBhcnNlci5zdHJlZXQoKTtcblxuICBpZiAoc21kUGFyc2VyLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICAuLi5zbWRQYXJzZXIuZXJyb3JzLm1hcCgoZXJyb3IpID0+ICh7XG4gICAgICAgIG1lc3NhZ2U6IGBOZXNwcsOhdm7DvSB6w6FwaXMgcHJhdmlkbGEgLSBuZXZ5bmVjaGFsaSBqc3RlIG7Em2NvP2AsXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBlcnJvci50b2tlbi5zdGFydE9mZnNldCxcbiAgICAgICAgZW5kT2Zmc2V0OiBlcnJvci50b2tlbi5lbmRPZmZzZXQgPz8gdGV4dC5sZW5ndGgsXG4gICAgICB9KSlcbiAgICApO1xuICAgIGlmIChzaG93RGVidWcpIHtcbiAgICAgIHByaW50TGV4aW5nUmVzdWx0SW5mbyhsZXhpbmdSZXN1bHQpO1xuICAgIH1cbiAgICByZXR1cm4geyBzbWRMaW5lczogW10sIGVycm9ycyB9O1xuICB9XG5cbiAgcmV0dXJuIHsgc21kTGluZXMsIGVycm9ycyB9O1xufTtcbiJdfQ==
@@ -1,23 +1,23 @@
1
- import { EmbeddedActionsParser, TokenVocabulary } from "chevrotain";
2
- import { RichNumber, SmdLine } from "./types";
3
- export declare class SmdParser extends EmbeddedActionsParser {
4
- constructor(tokenVocabulary: TokenVocabulary);
5
- street: import("chevrotain").ParserMethod<[], SmdLine[]>;
6
- private streetNameAndNumbersSpecs;
7
- private municipalityPartNameAndNumbersSpecs;
8
- private numberSpecs;
9
- private seriesSpecs;
10
- private _gatePostfixTypeSeriesSpec;
11
- private postfixTypeSeriesSpec;
12
- private rangeList;
13
- private seriesType;
14
- private rangeOrNumber;
15
- private range;
16
- private fromAndAbove;
17
- private fromAndAboveWithType;
18
- private toOrBelow;
19
- private toOrBelowWithType;
20
- private fullStreetNumber;
21
- }
22
- export declare const parseRichNumber: (number: string) => RichNumber;
23
- export declare const parseMunicipalityPartName: (name: string) => string;
1
+ import { EmbeddedActionsParser, TokenVocabulary } from "chevrotain";
2
+ import { RichNumber, SmdLine } from "./types";
3
+ export declare class SmdParser extends EmbeddedActionsParser {
4
+ constructor(tokenVocabulary: TokenVocabulary);
5
+ street: import("chevrotain").ParserMethod<[], SmdLine[]>;
6
+ private streetNameAndNumbersSpecs;
7
+ private municipalityPartNameAndNumbersSpecs;
8
+ private numberSpecs;
9
+ private seriesSpecs;
10
+ private _gatePostfixTypeSeriesSpec;
11
+ private postfixTypeSeriesSpec;
12
+ private rangeList;
13
+ private seriesType;
14
+ private rangeOrNumber;
15
+ private range;
16
+ private fromAndAbove;
17
+ private fromAndAboveWithType;
18
+ private toOrBelow;
19
+ private toOrBelowWithType;
20
+ private fullStreetNumber;
21
+ }
22
+ export declare const parseRichNumber: (number: string) => RichNumber;
23
+ export declare const parseMunicipalityPartName: (name: string) => string;