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.
- package/LICENSE +21 -21
- package/README.md +69 -69
- package/dist/bin/address-points.d.ts +1 -1
- package/dist/bin/address-points.js +16 -16
- package/dist/bin/cities.d.ts +1 -1
- package/dist/bin/cities.js +10 -10
- package/dist/bin/clear-all.d.ts +1 -1
- package/dist/bin/clear-all.js +13 -13
- package/dist/bin/constants.d.ts +2 -2
- package/dist/bin/constants.js +4 -4
- package/dist/bin/generate-syntax-diagrams.d.ts +1 -1
- package/dist/bin/generate-syntax-diagrams.js +20 -20
- package/dist/bin/init-db.d.ts +1 -1
- package/dist/bin/init-db.js +8 -8
- package/dist/bin/knex.d.ts +1 -1
- package/dist/bin/knex.js +10 -10
- package/dist/bin/parse-ordinance.d.ts +1 -1
- package/dist/bin/parse-ordinance.js +74 -74
- package/dist/bin/polygons.d.ts +1 -1
- package/dist/bin/polygons.js +27 -27
- package/dist/bin/regions.d.ts +1 -1
- package/dist/bin/regions.js +10 -10
- package/dist/bin/schools.d.ts +1 -1
- package/dist/bin/schools.js +10 -10
- package/dist/bin/streets.d.ts +1 -1
- package/dist/bin/streets.js +19 -19
- package/dist/bin/sync-all.d.ts +1 -1
- package/dist/bin/sync-all.js +4 -4
- package/dist/db/address-points.d.ts +59 -59
- package/dist/db/address-points.js +401 -399
- package/dist/db/cities.d.ts +7 -7
- package/dist/db/cities.js +95 -95
- package/dist/db/db.d.ts +37 -37
- package/dist/db/db.js +191 -191
- package/dist/db/founders.d.ts +14 -14
- package/dist/db/founders.js +461 -461
- package/dist/db/meta.d.ts +4 -4
- package/dist/db/meta.js +26 -26
- package/dist/db/migrations/20230704125715_initial.js +304 -304
- package/dist/db/migrations/20230731232915_city_positions.js +13 -13
- package/dist/db/migrations/20240106224603_city_polygon.js +11 -11
- package/dist/db/migrations/20240320200534_district_polygon.js +11 -11
- package/dist/db/migrations/20250316162700_kindergartens.js +12 -12
- package/dist/db/regions.d.ts +31 -31
- package/dist/db/regions.js +81 -81
- package/dist/db/schools.d.ts +7 -7
- package/dist/db/schools.js +95 -95
- package/dist/db/street-sync.d.ts +6 -6
- package/dist/db/street-sync.js +22 -22
- package/dist/db/sync-log.d.ts +9 -9
- package/dist/db/sync-log.js +66 -66
- package/dist/db/types.d.ts +59 -59
- package/dist/db/types.js +26 -26
- package/dist/index.d.ts +23 -23
- package/dist/index.js +32 -32
- package/dist/open-data-sync/address-points.d.ts +2 -2
- package/dist/open-data-sync/address-points.js +68 -68
- package/dist/open-data-sync/cities.d.ts +2 -2
- package/dist/open-data-sync/cities.js +32 -32
- package/dist/open-data-sync/common.d.ts +2 -2
- package/dist/open-data-sync/common.js +22 -22
- package/dist/open-data-sync/regions.d.ts +2 -2
- package/dist/open-data-sync/regions.js +37 -37
- package/dist/open-data-sync/schools.d.ts +3 -3
- package/dist/open-data-sync/schools.js +207 -207
- package/dist/open-data-sync/streets.d.ts +2 -2
- package/dist/open-data-sync/streets.js +132 -132
- package/dist/smd-to-csv/json-to-csv.d.ts +1 -1
- package/dist/smd-to-csv/json-to-csv.js +154 -154
- package/dist/smd-to-csv/ordinance-to-csv-rules.d.ts +1 -1
- package/dist/smd-to-csv/ordinance-to-csv-rules.js +23 -23
- package/dist/smd-to-csv/txt-to-json.d.ts +1 -1
- package/dist/smd-to-csv/txt-to-json.js +92 -92
- package/dist/souradnice.csv +6260 -6260
- package/dist/street-markdown/municipality.d.ts +11 -11
- package/dist/street-markdown/municipality.js +116 -116
- package/dist/street-markdown/polygons.d.ts +7 -7
- package/dist/street-markdown/polygons.js +261 -261
- package/dist/street-markdown/roman-numerals.d.ts +1 -1
- package/dist/street-markdown/roman-numerals.js +68 -68
- package/dist/street-markdown/smd-line-parser.d.ts +4 -4
- package/dist/street-markdown/smd-line-parser.js +40 -40
- package/dist/street-markdown/smd-parser.d.ts +23 -23
- package/dist/street-markdown/smd-parser.js +393 -393
- package/dist/street-markdown/smd.d.ts +24 -24
- package/dist/street-markdown/smd.js +440 -440
- package/dist/street-markdown/token-definition.d.ts +25 -25
- package/dist/street-markdown/token-definition.js +168 -168
- package/dist/street-markdown/types.d.ts +148 -148
- package/dist/street-markdown/types.js +13 -13
- package/dist/utils/atom.d.ts +2 -2
- package/dist/utils/atom.js +57 -57
- package/dist/utils/helpers.d.ts +28 -28
- package/dist/utils/helpers.js +176 -176
- package/dist/utils/jtsk2wgs84.d.ts +17 -17
- package/dist/utils/jtsk2wgs84.js +82 -82
- 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,
|
|
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,
|
|
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;
|