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,92 +1,92 @@
1
- import { createReadStream } from "fs";
2
- import { once } from "events";
3
- import { createInterface } from "readline";
4
- const pattern = /^([^ –,-]+([ –-][^ ,–-]+)*)( [–-] (lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?((, ?| ?a ?)(lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?)*)?$/;
5
- function getNewDistrict(name) {
6
- return {
7
- name: name,
8
- schools: [],
9
- };
10
- }
11
- function getNewSchool(name) {
12
- return {
13
- name: name,
14
- lines: [],
15
- };
16
- }
17
- export async function getParsedDistricts(filePath) {
18
- const rl = createInterface({
19
- input: createReadStream(filePath),
20
- });
21
- let lineNumber = 1;
22
- let districts = [];
23
- let currentDistrict = null;
24
- let currentSchool = null;
25
- rl.on("line", function (line) {
26
- let s = line
27
- .trim()
28
- .replace(/ +(?= )/g, "")
29
- .replace(/–/g, "-")
30
- .replace(/nábř\./g, "nábřeží")
31
- .replace(/Nábř\./g, "Nábřeží")
32
- .replace(/nám\./g, "náměstí")
33
- .replace(/Nám\./g, "Náměstí");
34
- if (s[0] == "#") {
35
- if (currentSchool != null) {
36
- if (currentDistrict == null) {
37
- currentDistrict = getNewDistrict("");
38
- }
39
- currentDistrict.schools.push(currentSchool);
40
- currentSchool = null;
41
- }
42
- if (currentDistrict != null) {
43
- districts.push(currentDistrict);
44
- }
45
- currentDistrict = getNewDistrict(s.substring(1).trim());
46
- currentSchool = null;
47
- }
48
- else if (s == "") {
49
- if (currentSchool != null) {
50
- if (currentDistrict == null) {
51
- currentDistrict = getNewDistrict("");
52
- }
53
- currentDistrict.schools.push(currentSchool);
54
- currentSchool = null;
55
- }
56
- }
57
- else {
58
- if (currentSchool == null) {
59
- currentSchool = getNewSchool(s);
60
- }
61
- else {
62
- if (s[0] == "!") {
63
- currentSchool.lines.push(s);
64
- }
65
- else {
66
- if (pattern.test(s)) {
67
- currentSchool.lines.push(s);
68
- }
69
- else {
70
- console.error("Invalid street line on line " + lineNumber + ": " + s);
71
- }
72
- }
73
- }
74
- }
75
- lineNumber++;
76
- });
77
- rl.on("close", function () {
78
- if (currentSchool != null) {
79
- if (currentDistrict == null) {
80
- currentDistrict = getNewDistrict("");
81
- }
82
- currentDistrict.schools.push(currentSchool);
83
- }
84
- if (currentDistrict != null) {
85
- districts.push(currentDistrict);
86
- }
87
- // console.log(JSON.stringify(districts));
88
- });
89
- await once(rl, "close");
90
- return districts;
91
- }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHh0LXRvLWpzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc21kLXRvLWNzdi90eHQtdG8tanNvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxHQUNYLCtiQUErYixDQUFDO0FBRWxjLFNBQVMsY0FBYyxDQUFDLElBQUk7SUFDMUIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLEVBQUU7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQUk7SUFDeEIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQUMsUUFBUTtJQUMvQyxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFDekIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztLQUNsQyxDQUFDLENBQUM7SUFFSCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztJQUMzQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFekIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJO1FBQzFCLElBQUksQ0FBQyxHQUFHLElBQUk7YUFDVCxJQUFJLEVBQUU7YUFDTixPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQzthQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQzthQUNsQixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUM3QixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUM3QixPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQzthQUM1QixPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtZQUNmLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDekIsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO29CQUMzQixlQUFlLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDNUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUN0QjtZQUVELElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtnQkFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNqQztZQUVELGVBQWUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXhELGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDdEI7YUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUN6QixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUU7b0JBQzNCLGVBQWUsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUM1QyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1NBQ0Y7YUFBTTtZQUNMLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDekIsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7b0JBQ2YsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCO3FCQUFNO29CQUNMLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDbkIsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzdCO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQ1gsOEJBQThCLEdBQUcsVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLENBQ3ZELENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO1FBRUQsVUFBVSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQ2IsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3pCLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtnQkFDM0IsZUFBZSxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QztZQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDakM7UUFFRCwwQ0FBMEM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEIsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcclxuaW1wb3J0IHsgb25jZSB9IGZyb20gXCJldmVudHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlSW50ZXJmYWNlIH0gZnJvbSBcInJlYWRsaW5lXCI7XHJcblxyXG5jb25zdCBwYXR0ZXJuID1cclxuICAvXihbXiDigJMsLV0rKFsg4oCTLV1bXiAs4oCTLV0rKSopKCBb4oCTLV0gKGxpY2jDoSDEjS58c3Vkw6EgxI0ufMSNLnzEjS4gcC4pKCAoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykoKCwgP3wgP2EgPykoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykpKik/KCgsID98ID9hID8pKGxpY2jDoSDEjS58c3Vkw6EgxI0ufMSNLnzEjS4gcC4pKCAoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykoKCwgP3wgP2EgPykoXFxkK1thLXpBLVpdPyA/W+KAky1dID9cXGQrW2EtekEtWl0/fChvZCApP1xcZCtbYS16QS1aXT8oIGEpPyB2w73FoWV8XFxkK1thLXpBLVpdPykpKik/KSopPyQvO1xyXG5cclxuZnVuY3Rpb24gZ2V0TmV3RGlzdHJpY3QobmFtZSkge1xyXG4gIHJldHVybiB7XHJcbiAgICBuYW1lOiBuYW1lLFxyXG4gICAgc2Nob29sczogW10sXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TmV3U2Nob29sKG5hbWUpIHtcclxuICByZXR1cm4ge1xyXG4gICAgbmFtZTogbmFtZSxcclxuICAgIGxpbmVzOiBbXSxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkRGlzdHJpY3RzKGZpbGVQYXRoKSB7XHJcbiAgY29uc3QgcmwgPSBjcmVhdGVJbnRlcmZhY2Uoe1xyXG4gICAgaW5wdXQ6IGNyZWF0ZVJlYWRTdHJlYW0oZmlsZVBhdGgpLFxyXG4gIH0pO1xyXG5cclxuICBsZXQgbGluZU51bWJlciA9IDE7XHJcbiAgbGV0IGRpc3RyaWN0cyA9IFtdO1xyXG4gIGxldCBjdXJyZW50RGlzdHJpY3QgPSBudWxsO1xyXG4gIGxldCBjdXJyZW50U2Nob29sID0gbnVsbDtcclxuXHJcbiAgcmwub24oXCJsaW5lXCIsIGZ1bmN0aW9uIChsaW5lKSB7XHJcbiAgICBsZXQgcyA9IGxpbmVcclxuICAgICAgLnRyaW0oKVxyXG4gICAgICAucmVwbGFjZSgvICsoPz0gKS9nLCBcIlwiKVxyXG4gICAgICAucmVwbGFjZSgv4oCTL2csIFwiLVwiKVxyXG4gICAgICAucmVwbGFjZSgvbsOhYsWZXFwuL2csIFwibsOhYsWZZcW+w61cIilcclxuICAgICAgLnJlcGxhY2UoL07DoWLFmVxcLi9nLCBcIk7DoWLFmWXFvsOtXCIpXHJcbiAgICAgIC5yZXBsYWNlKC9uw6FtXFwuL2csIFwibsOhbcSbc3TDrVwiKVxyXG4gICAgICAucmVwbGFjZSgvTsOhbVxcLi9nLCBcIk7DoW3Em3N0w61cIik7XHJcblxyXG4gICAgaWYgKHNbMF0gPT0gXCIjXCIpIHtcclxuICAgICAgaWYgKGN1cnJlbnRTY2hvb2wgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgPT0gbnVsbCkge1xyXG4gICAgICAgICAgY3VycmVudERpc3RyaWN0ID0gZ2V0TmV3RGlzdHJpY3QoXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJlbnREaXN0cmljdC5zY2hvb2xzLnB1c2goY3VycmVudFNjaG9vbCk7XHJcbiAgICAgICAgY3VycmVudFNjaG9vbCA9IG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgIT0gbnVsbCkge1xyXG4gICAgICAgIGRpc3RyaWN0cy5wdXNoKGN1cnJlbnREaXN0cmljdCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KHMuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XHJcblxyXG4gICAgICBjdXJyZW50U2Nob29sID0gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAocyA9PSBcIlwiKSB7XHJcbiAgICAgIGlmIChjdXJyZW50U2Nob29sICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoY3VycmVudERpc3RyaWN0ID09IG51bGwpIHtcclxuICAgICAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KFwiXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50RGlzdHJpY3Quc2Nob29scy5wdXNoKGN1cnJlbnRTY2hvb2wpO1xyXG4gICAgICAgIGN1cnJlbnRTY2hvb2wgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoY3VycmVudFNjaG9vbCA9PSBudWxsKSB7XHJcbiAgICAgICAgY3VycmVudFNjaG9vbCA9IGdldE5ld1NjaG9vbChzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc1swXSA9PSBcIiFcIikge1xyXG4gICAgICAgICAgY3VycmVudFNjaG9vbC5saW5lcy5wdXNoKHMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KHMpKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRTY2hvb2wubGluZXMucHVzaChzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgXCJJbnZhbGlkIHN0cmVldCBsaW5lIG9uIGxpbmUgXCIgKyBsaW5lTnVtYmVyICsgXCI6IFwiICsgc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxpbmVOdW1iZXIrKztcclxuICB9KTtcclxuXHJcbiAgcmwub24oXCJjbG9zZVwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoY3VycmVudFNjaG9vbCAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgPT0gbnVsbCkge1xyXG4gICAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KFwiXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnREaXN0cmljdC5zY2hvb2xzLnB1c2goY3VycmVudFNjaG9vbCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGN1cnJlbnREaXN0cmljdCAhPSBudWxsKSB7XHJcbiAgICAgIGRpc3RyaWN0cy5wdXNoKGN1cnJlbnREaXN0cmljdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGlzdHJpY3RzKSk7XHJcbiAgfSk7XHJcblxyXG4gIGF3YWl0IG9uY2UocmwsIFwiY2xvc2VcIik7XHJcbiAgcmV0dXJuIGRpc3RyaWN0cztcclxufVxyXG4iXX0=
1
+ import { createReadStream } from "fs";
2
+ import { once } from "events";
3
+ import { createInterface } from "readline";
4
+ const pattern = /^([^ –,-]+([ –-][^ ,–-]+)*)( [–-] (lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?((, ?| ?a ?)(lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?)*)?$/;
5
+ function getNewDistrict(name) {
6
+ return {
7
+ name: name,
8
+ schools: [],
9
+ };
10
+ }
11
+ function getNewSchool(name) {
12
+ return {
13
+ name: name,
14
+ lines: [],
15
+ };
16
+ }
17
+ export async function getParsedDistricts(filePath) {
18
+ const rl = createInterface({
19
+ input: createReadStream(filePath),
20
+ });
21
+ let lineNumber = 1;
22
+ let districts = [];
23
+ let currentDistrict = null;
24
+ let currentSchool = null;
25
+ rl.on("line", function (line) {
26
+ let s = line
27
+ .trim()
28
+ .replace(/ +(?= )/g, "")
29
+ .replace(/–/g, "-")
30
+ .replace(/nábř\./g, "nábřeží")
31
+ .replace(/Nábř\./g, "Nábřeží")
32
+ .replace(/nám\./g, "náměstí")
33
+ .replace(/Nám\./g, "Náměstí");
34
+ if (s[0] == "#") {
35
+ if (currentSchool != null) {
36
+ if (currentDistrict == null) {
37
+ currentDistrict = getNewDistrict("");
38
+ }
39
+ currentDistrict.schools.push(currentSchool);
40
+ currentSchool = null;
41
+ }
42
+ if (currentDistrict != null) {
43
+ districts.push(currentDistrict);
44
+ }
45
+ currentDistrict = getNewDistrict(s.substring(1).trim());
46
+ currentSchool = null;
47
+ }
48
+ else if (s == "") {
49
+ if (currentSchool != null) {
50
+ if (currentDistrict == null) {
51
+ currentDistrict = getNewDistrict("");
52
+ }
53
+ currentDistrict.schools.push(currentSchool);
54
+ currentSchool = null;
55
+ }
56
+ }
57
+ else {
58
+ if (currentSchool == null) {
59
+ currentSchool = getNewSchool(s);
60
+ }
61
+ else {
62
+ if (s[0] == "!") {
63
+ currentSchool.lines.push(s);
64
+ }
65
+ else {
66
+ if (pattern.test(s)) {
67
+ currentSchool.lines.push(s);
68
+ }
69
+ else {
70
+ console.error("Invalid street line on line " + lineNumber + ": " + s);
71
+ }
72
+ }
73
+ }
74
+ }
75
+ lineNumber++;
76
+ });
77
+ rl.on("close", function () {
78
+ if (currentSchool != null) {
79
+ if (currentDistrict == null) {
80
+ currentDistrict = getNewDistrict("");
81
+ }
82
+ currentDistrict.schools.push(currentSchool);
83
+ }
84
+ if (currentDistrict != null) {
85
+ districts.push(currentDistrict);
86
+ }
87
+ // console.log(JSON.stringify(districts));
88
+ });
89
+ await once(rl, "close");
90
+ return districts;
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHh0LXRvLWpzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc21kLXRvLWNzdi90eHQtdG8tanNvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxHQUNYLCtiQUErYixDQUFDO0FBRWxjLFNBQVMsY0FBYyxDQUFDLElBQUk7SUFDMUIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLEVBQUU7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQUk7SUFDeEIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQUMsUUFBUTtJQUMvQyxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFDekIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztLQUNsQyxDQUFDLENBQUM7SUFFSCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztJQUMzQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFekIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJO1FBQzFCLElBQUksQ0FBQyxHQUFHLElBQUk7YUFDVCxJQUFJLEVBQUU7YUFDTixPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQzthQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQzthQUNsQixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUM3QixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUM3QixPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQzthQUM1QixPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtZQUNmLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDekIsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO29CQUMzQixlQUFlLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDNUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUN0QjtZQUVELElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtnQkFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNqQztZQUVELGVBQWUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXhELGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDdEI7YUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUN6QixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUU7b0JBQzNCLGVBQWUsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUM1QyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1NBQ0Y7YUFBTTtZQUNMLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDekIsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7b0JBQ2YsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCO3FCQUFNO29CQUNMLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDbkIsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzdCO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQ1gsOEJBQThCLEdBQUcsVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLENBQ3ZELENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO1FBRUQsVUFBVSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQ2IsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3pCLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtnQkFDM0IsZUFBZSxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QztZQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDakM7UUFFRCwwQ0FBMEM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEIsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IG9uY2UgfSBmcm9tIFwiZXZlbnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tIFwicmVhZGxpbmVcIjtcblxuY29uc3QgcGF0dGVybiA9XG4gIC9eKFteIOKAkywtXSsoWyDigJMtXVteICzigJMtXSspKikoIFvigJMtXSAobGljaMOhIMSNLnxzdWTDoSDEjS58xI0ufMSNLiBwLikoIChcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSgoLCA/fCA/YSA/KShcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSkqKT8oKCwgP3wgP2EgPykobGljaMOhIMSNLnxzdWTDoSDEjS58xI0ufMSNLiBwLikoIChcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSgoLCA/fCA/YSA/KShcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSkqKT8pKik/JC87XG5cbmZ1bmN0aW9uIGdldE5ld0Rpc3RyaWN0KG5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHNjaG9vbHM6IFtdLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXROZXdTY2hvb2wobmFtZSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgbGluZXM6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkRGlzdHJpY3RzKGZpbGVQYXRoKSB7XG4gIGNvbnN0IHJsID0gY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCksXG4gIH0pO1xuXG4gIGxldCBsaW5lTnVtYmVyID0gMTtcbiAgbGV0IGRpc3RyaWN0cyA9IFtdO1xuICBsZXQgY3VycmVudERpc3RyaWN0ID0gbnVsbDtcbiAgbGV0IGN1cnJlbnRTY2hvb2wgPSBudWxsO1xuXG4gIHJsLm9uKFwibGluZVwiLCBmdW5jdGlvbiAobGluZSkge1xuICAgIGxldCBzID0gbGluZVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoLyArKD89ICkvZywgXCJcIilcbiAgICAgIC5yZXBsYWNlKC/igJMvZywgXCItXCIpXG4gICAgICAucmVwbGFjZSgvbsOhYsWZXFwuL2csIFwibsOhYsWZZcW+w61cIilcbiAgICAgIC5yZXBsYWNlKC9Ow6FixZlcXC4vZywgXCJOw6FixZllxb7DrVwiKVxuICAgICAgLnJlcGxhY2UoL27DoW1cXC4vZywgXCJuw6FtxJtzdMOtXCIpXG4gICAgICAucmVwbGFjZSgvTsOhbVxcLi9nLCBcIk7DoW3Em3N0w61cIik7XG5cbiAgICBpZiAoc1swXSA9PSBcIiNcIikge1xuICAgICAgaWYgKGN1cnJlbnRTY2hvb2wgIT0gbnVsbCkge1xuICAgICAgICBpZiAoY3VycmVudERpc3RyaWN0ID09IG51bGwpIHtcbiAgICAgICAgICBjdXJyZW50RGlzdHJpY3QgPSBnZXROZXdEaXN0cmljdChcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50RGlzdHJpY3Quc2Nob29scy5wdXNoKGN1cnJlbnRTY2hvb2wpO1xuICAgICAgICBjdXJyZW50U2Nob29sID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnREaXN0cmljdCAhPSBudWxsKSB7XG4gICAgICAgIGRpc3RyaWN0cy5wdXNoKGN1cnJlbnREaXN0cmljdCk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KHMuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XG5cbiAgICAgIGN1cnJlbnRTY2hvb2wgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAocyA9PSBcIlwiKSB7XG4gICAgICBpZiAoY3VycmVudFNjaG9vbCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgPT0gbnVsbCkge1xuICAgICAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnREaXN0cmljdC5zY2hvb2xzLnB1c2goY3VycmVudFNjaG9vbCk7XG4gICAgICAgIGN1cnJlbnRTY2hvb2wgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VycmVudFNjaG9vbCA9PSBudWxsKSB7XG4gICAgICAgIGN1cnJlbnRTY2hvb2wgPSBnZXROZXdTY2hvb2wocyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc1swXSA9PSBcIiFcIikge1xuICAgICAgICAgIGN1cnJlbnRTY2hvb2wubGluZXMucHVzaChzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KHMpKSB7XG4gICAgICAgICAgICBjdXJyZW50U2Nob29sLmxpbmVzLnB1c2gocyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiSW52YWxpZCBzdHJlZXQgbGluZSBvbiBsaW5lIFwiICsgbGluZU51bWJlciArIFwiOiBcIiArIHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGluZU51bWJlcisrO1xuICB9KTtcblxuICBybC5vbihcImNsb3NlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY3VycmVudFNjaG9vbCAhPSBudWxsKSB7XG4gICAgICBpZiAoY3VycmVudERpc3RyaWN0ID09IG51bGwpIHtcbiAgICAgICAgY3VycmVudERpc3RyaWN0ID0gZ2V0TmV3RGlzdHJpY3QoXCJcIik7XG4gICAgICB9XG4gICAgICBjdXJyZW50RGlzdHJpY3Quc2Nob29scy5wdXNoKGN1cnJlbnRTY2hvb2wpO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50RGlzdHJpY3QgIT0gbnVsbCkge1xuICAgICAgZGlzdHJpY3RzLnB1c2goY3VycmVudERpc3RyaWN0KTtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkaXN0cmljdHMpKTtcbiAgfSk7XG5cbiAgYXdhaXQgb25jZShybCwgXCJjbG9zZVwiKTtcbiAgcmV0dXJuIGRpc3RyaWN0cztcbn1cbiJdfQ==