cry-sloimena 1.0.6 → 1.0.8
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/dist/.tsbuildinfo +1 -1
- package/dist/{0-file-locations.d.ts → 0-file-locations.d.mts} +1 -1
- package/dist/{0-file-locations.js → 0-file-locations.mjs} +1 -1
- package/dist/data/{firmeDb.d.ts → firmeDb.d.mts} +1 -1
- package/dist/data/{imenaFirm.js → imenaFirm.mjs} +1 -1
- package/dist/index.d.mts +7 -0
- package/dist/index.mjs +7 -0
- package/dist/initializeData/{1-parse-opsiprs-csv.js → 1-parse-opsiprs-csv.mjs} +17 -15
- package/dist/{izlusci.d.ts → izlusci.d.mts} +1 -1
- package/dist/{izlusci.js → izlusci.mjs} +9 -3
- package/dist/{poisciFirme.d.ts → poisciFirme.d.mts} +1 -1
- package/dist/{poisciFirme.js → poisciFirme.mjs} +7 -7
- package/dist/runtime/izlusci.d.mts +2 -0
- package/dist/runtime/izlusci.mjs +188 -0
- package/dist/runtime/urediImePriimek.d.mts +2 -0
- package/dist/runtime/urediImePriimek.mjs +27 -0
- package/dist/test/{imena.test.js → imena.test.mjs} +1 -1
- package/dist/types/{PravnaOsebaNormalised.d.ts → PravnaOsebaNormalised.d.mts} +1 -1
- package/dist/{urediImePriimek.js → urediImePriimek.mjs} +4 -4
- package/dist/utils/{LegalFormSuffixes.js → LegalFormSuffixes.mjs} +1 -1
- package/dist/utils/{ObjectSortedListsMapper.js → ObjectSortedListsMapper.mjs} +1 -1
- package/dist/utils/{normalizeListOfNames.js → normalizeListOfNames.mjs} +1 -1
- package/dist/utils/{normalizeListOfStrings.js → normalizeListOfStrings.mjs} +1 -1
- package/dist/utils/{normalizeStringForSearch.js → normalizeStringForSearch.mjs} +2 -2
- package/dist/utils/{normalizirano.js → normalizirano.mjs} +4 -4
- package/package.json +1 -1
- package/src/0-file-locations.mts +3 -0
- package/src/data/{firmeDb.ts → firmeDb.mts} +1 -1
- package/src/data/imenaFirm.mts +5 -0
- package/src/index.mts +7 -0
- package/src/initializeData/{1-parse-opsiprs-csv.ts → 1-parse-opsiprs-csv.mts} +20 -16
- package/src/{izlusci.ts → izlusci.mts} +13 -7
- package/src/{poisciFirme.ts → poisciFirme.mts} +9 -9
- package/src/runtime/izlusci.mts +208 -0
- package/src/runtime/urediImePriimek.mts +33 -0
- package/src/test/{imena.test.ts → imena.test.mts} +1 -1
- package/src/types/{PravnaOsebaNormalised.ts → PravnaOsebaNormalised.mts} +1 -1
- package/src/{urediImePriimek.ts → urediImePriimek.mts} +4 -4
- package/src/utils/{LegalFormSuffixes.ts → LegalFormSuffixes.mts} +1 -1
- package/src/utils/{ObjectSortedListsMapper.ts → ObjectSortedListsMapper.mts} +1 -1
- package/src/utils/{normalizeListOfNames.ts → normalizeListOfNames.mts} +1 -1
- package/src/utils/{normalizeListOfStrings.ts → normalizeListOfStrings.mts} +1 -1
- package/src/utils/{normalizeStringForSearch.ts → normalizeStringForSearch.mts} +2 -2
- package/src/utils/{normalizirano.ts → normalizirano.mts} +4 -4
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -7
- package/src/0-file-locations.ts +0 -3
- package/src/data/firmeDb.js +0 -7
- package/src/data/imenaFirm.ts +0 -5
- package/src/index.ts +0 -7
- package/src/types/PravnaOseba.js +0 -2
- /package/dist/data/{firmeDb.js → firmeDb.mjs} +0 -0
- /package/dist/data/{imenaFirm.d.ts → imenaFirm.d.mts} +0 -0
- /package/dist/data/{imenaM.d.ts → imenaM.d.mts} +0 -0
- /package/dist/data/{imenaM.js → imenaM.mjs} +0 -0
- /package/dist/data/{imenaZ.d.ts → imenaZ.d.mts} +0 -0
- /package/dist/data/{imenaZ.js → imenaZ.mjs} +0 -0
- /package/dist/data/{priimki.d.ts → priimki.d.mts} +0 -0
- /package/dist/data/{priimki.js → priimki.mjs} +0 -0
- /package/dist/{davcnaZaMaticno.d.ts → davcnaZaMaticno.d.mts} +0 -0
- /package/dist/{davcnaZaMaticno.js → davcnaZaMaticno.mjs} +0 -0
- /package/dist/initializeData/{1-parse-opsiprs-csv.d.ts → 1-parse-opsiprs-csv.d.mts} +0 -0
- /package/dist/test/{imena.test.d.ts → imena.test.d.mts} +0 -0
- /package/dist/types/{PravnaOseba.d.ts → PravnaOseba.d.mts} +0 -0
- /package/dist/types/{PravnaOseba.js → PravnaOseba.mjs} +0 -0
- /package/dist/types/{PravnaOsebaNormalised.js → PravnaOsebaNormalised.mjs} +0 -0
- /package/dist/{urediImePriimek.d.ts → urediImePriimek.d.mts} +0 -0
- /package/dist/utils/{LegalFormSuffixes.d.ts → LegalFormSuffixes.d.mts} +0 -0
- /package/dist/utils/{ObjectSortedListsMapper.d.ts → ObjectSortedListsMapper.d.mts} +0 -0
- /package/dist/utils/{SortedStringListMapper.d.ts → SortedStringListMapper.d.mts} +0 -0
- /package/dist/utils/{SortedStringListMapper.js → SortedStringListMapper.mjs} +0 -0
- /package/dist/utils/{WordsToObjectMapper.d.ts → WordsToObjectMapper.d.mts} +0 -0
- /package/dist/utils/{WordsToObjectMapper.js → WordsToObjectMapper.mjs} +0 -0
- /package/dist/utils/{binarySearch.d.ts → binarySearch.d.mts} +0 -0
- /package/dist/utils/{binarySearch.js → binarySearch.mjs} +0 -0
- /package/dist/utils/{findAny.d.ts → findAny.d.mts} +0 -0
- /package/dist/utils/{findAny.js → findAny.mjs} +0 -0
- /package/dist/utils/{normalizeListOfNames.d.ts → normalizeListOfNames.d.mts} +0 -0
- /package/dist/utils/{normalizeListOfStrings.d.ts → normalizeListOfStrings.d.mts} +0 -0
- /package/dist/utils/{normalizeStringForSearch.d.ts → normalizeStringForSearch.d.mts} +0 -0
- /package/dist/utils/{normalizeWordOrSeparator.d.ts → normalizeWordOrSeparator.d.mts} +0 -0
- /package/dist/utils/{normalizeWordOrSeparator.js → normalizeWordOrSeparator.mjs} +0 -0
- /package/dist/utils/{normalizirano.d.ts → normalizirano.d.mts} +0 -0
- /package/dist/utils/{tokenizeIme.d.ts → tokenizeIme.d.mts} +0 -0
- /package/dist/utils/{tokenizeIme.js → tokenizeIme.mjs} +0 -0
- /package/src/data/{imenaM.ts → imenaM.mts} +0 -0
- /package/src/data/{imenaZ.ts → imenaZ.mts} +0 -0
- /package/src/data/{priimki.ts → priimki.mts} +0 -0
- /package/src/{davcnaZaMaticno.ts → davcnaZaMaticno.mts} +0 -0
- /package/src/types/{PravnaOseba.ts → PravnaOseba.mts} +0 -0
- /package/src/utils/{SortedStringListMapper.ts → SortedStringListMapper.mts} +0 -0
- /package/src/utils/{WordsToObjectMapper.ts → WordsToObjectMapper.mts} +0 -0
- /package/src/utils/{binarySearch.ts → binarySearch.mts} +0 -0
- /package/src/utils/{findAny.ts → findAny.mts} +0 -0
- /package/src/utils/{normalizeWordOrSeparator.ts → normalizeWordOrSeparator.mts} +0 -0
- /package/src/utils/{tokenizeIme.ts → tokenizeIme.mts} +0 -0
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { poisciFirme } from "./poisciFirme.
|
|
2
|
-
import { urediImePriimek } from "./urediImePriimek.
|
|
1
|
+
import { poisciFirme } from "./poisciFirme.mjs";
|
|
2
|
+
import { urediImePriimek } from "./urediImePriimek.mjs";
|
|
3
|
+
import { findAny } from "./utils/findAny.mjs";
|
|
4
|
+
import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
|
|
5
|
+
import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
|
|
3
6
|
/**
|
|
4
7
|
* Parse an input string and attempt to extract either a person or a firm.
|
|
5
8
|
*
|
|
@@ -22,8 +25,10 @@ import { urediImePriimek } from "./urediImePriimek.js";
|
|
|
22
25
|
export function izlusci(vhodnoIme, opcije) {
|
|
23
26
|
let vrniFirme = !opcije?.vrni || opcije.vrni === "firme" || opcije.vrni === "oboje";
|
|
24
27
|
let vrniImena = !opcije?.vrni || opcije.vrni === "imena" || opcije.vrni === "oboje";
|
|
28
|
+
const normalized = normalizeStringForSearch(vhodnoIme);
|
|
29
|
+
const legalDesignation = findAny(LegalFormSuffixesNormalized, normalized);
|
|
25
30
|
let najdeneFirme = vrniFirme && poisciFirme(vhodnoIme, { limit: opcije?.limit }) || undefined;
|
|
26
|
-
let urejenoIme = vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
|
|
31
|
+
let urejenoIme = !legalDesignation && vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
|
|
27
32
|
if (urejenoIme && typeof urejenoIme === "object") {
|
|
28
33
|
if (!urejenoIme.ime || !urejenoIme.priimek)
|
|
29
34
|
urejenoIme = undefined;
|
|
@@ -48,3 +53,4 @@ export function izlusci(vhodnoIme, opcije) {
|
|
|
48
53
|
return arr;
|
|
49
54
|
return vhodnoIme;
|
|
50
55
|
}
|
|
56
|
+
console.log(``, JSON.stringify(izlusci("Primož krajnik sp"), null, 4));
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { clone } from "cry-helpers";
|
|
2
|
-
import { firmeDb } from "./data/firmeDb.
|
|
3
|
-
import { findAny } from "./utils/findAny.
|
|
4
|
-
import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.
|
|
5
|
-
import { normalizeListOfNames } from "./utils/normalizeListOfNames.
|
|
6
|
-
import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.
|
|
7
|
-
import { DOLZINA_MATICNE } from "./0-file-locations.
|
|
8
|
-
const TIMING =
|
|
2
|
+
import { firmeDb } from "./data/firmeDb.mjs";
|
|
3
|
+
import { findAny } from "./utils/findAny.mjs";
|
|
4
|
+
import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
|
|
5
|
+
import { normalizeListOfNames } from "./utils/normalizeListOfNames.mjs";
|
|
6
|
+
import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
|
|
7
|
+
import { DOLZINA_MATICNE } from "./0-file-locations.mjs";
|
|
8
|
+
const TIMING = false;
|
|
9
9
|
console.warn("WARNING: Large amount of RAM allocated for poisciFirme.");
|
|
10
10
|
function onlyDigitsFast(s) {
|
|
11
11
|
if (s.length === 0)
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { createInterface } from 'readline';
|
|
3
|
+
import { izlusci } from '../izlusci.mjs';
|
|
4
|
+
const LIMIT = 10;
|
|
5
|
+
function printUsage() {
|
|
6
|
+
console.log(`
|
|
7
|
+
Uporaba: izlusciRuntime.mts [opcije] [iskalni_niz]
|
|
8
|
+
|
|
9
|
+
Opcije:
|
|
10
|
+
-f vraca samo firme
|
|
11
|
+
-i vraca samo imena
|
|
12
|
+
-o vraca oboje (privzeto)
|
|
13
|
+
-1 vrne samo en rezultat
|
|
14
|
+
-n vrne vec rezultatov
|
|
15
|
+
-d dodaj podatke firme
|
|
16
|
+
-b beautify ime (privzeto: true)
|
|
17
|
+
-h prikazi pomoc
|
|
18
|
+
|
|
19
|
+
Primeri:
|
|
20
|
+
izlusciRuntime.mts "Janez Novak"
|
|
21
|
+
izlusciRuntime.mts -i "Janez Novak"
|
|
22
|
+
izlusciRuntime.mts -f -n "Novak"
|
|
23
|
+
`);
|
|
24
|
+
}
|
|
25
|
+
function printInteractiveHelp() {
|
|
26
|
+
console.log(`
|
|
27
|
+
Interaktivni nacin - ukazi za spremembo opcij:
|
|
28
|
+
f - vraca samo firme
|
|
29
|
+
i - vraca samo imena
|
|
30
|
+
o - vraca oboje (privzeto)
|
|
31
|
+
1 - vrne samo en rezultat
|
|
32
|
+
n - vrne vec rezultatov
|
|
33
|
+
d - dodaj/odstrani podatke firme
|
|
34
|
+
b - beautify ime
|
|
35
|
+
q - izhod
|
|
36
|
+
? - pomoc
|
|
37
|
+
|
|
38
|
+
Vnesite ime ali firmo za iskanje.
|
|
39
|
+
`);
|
|
40
|
+
}
|
|
41
|
+
function printCurrentOptions(opts) {
|
|
42
|
+
const vrni = opts.vrni || 'oboje';
|
|
43
|
+
const vecRezultatov = (opts.limit || 1) > 1 ? 'da' : 'ne';
|
|
44
|
+
const beautify = opts.beautify !== false ? 'da' : 'ne';
|
|
45
|
+
console.log(`[Trenutne opcije: vrni=${vrni}, vec rezultatov=${vecRezultatov}, beautify=${beautify}]`);
|
|
46
|
+
console.log(``);
|
|
47
|
+
}
|
|
48
|
+
function parseArgs(args) {
|
|
49
|
+
const opts = {
|
|
50
|
+
vrni: 'oboje',
|
|
51
|
+
limit: LIMIT,
|
|
52
|
+
beautify: true
|
|
53
|
+
};
|
|
54
|
+
let query = null;
|
|
55
|
+
let showHelp = false;
|
|
56
|
+
for (let i = 0; i < args.length; i++) {
|
|
57
|
+
const arg = args[i];
|
|
58
|
+
if (arg === '-f') {
|
|
59
|
+
opts.vrni = 'firme';
|
|
60
|
+
}
|
|
61
|
+
else if (arg === '-i') {
|
|
62
|
+
opts.vrni = 'imena';
|
|
63
|
+
}
|
|
64
|
+
else if (arg === '-o') {
|
|
65
|
+
opts.vrni = 'oboje';
|
|
66
|
+
}
|
|
67
|
+
else if (arg === '-1') {
|
|
68
|
+
opts.limit = 1;
|
|
69
|
+
}
|
|
70
|
+
else if (arg === '-n') {
|
|
71
|
+
opts.limit = LIMIT;
|
|
72
|
+
}
|
|
73
|
+
else if (arg === '-d') {
|
|
74
|
+
opts.beautify = false;
|
|
75
|
+
}
|
|
76
|
+
else if (arg === '-h' || arg === '--help') {
|
|
77
|
+
showHelp = true;
|
|
78
|
+
}
|
|
79
|
+
else if (!arg.startsWith('-')) {
|
|
80
|
+
query = arg;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { opts, query, showHelp };
|
|
84
|
+
}
|
|
85
|
+
async function main() {
|
|
86
|
+
const args = process.argv.slice(2);
|
|
87
|
+
const { opts, query, showHelp } = parseArgs(args);
|
|
88
|
+
if (showHelp) {
|
|
89
|
+
printUsage();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Non-interactive mode if query provided
|
|
93
|
+
if (query && query.trim().length > 0) {
|
|
94
|
+
const result = izlusci(query, opts);
|
|
95
|
+
if (typeof result === 'string') {
|
|
96
|
+
console.log(result);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log(JSON.stringify(result, null, 2));
|
|
100
|
+
}
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// Interactive mode
|
|
104
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
105
|
+
printInteractiveHelp();
|
|
106
|
+
printCurrentOptions(opts);
|
|
107
|
+
const prompt = () => {
|
|
108
|
+
rl.question('> ', (input) => {
|
|
109
|
+
const trimmed = input.trim();
|
|
110
|
+
if (trimmed === 'q' || trimmed === 'quit' || trimmed === 'exit') {
|
|
111
|
+
rl.close();
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// Check for option commands
|
|
115
|
+
if (trimmed === 'f') {
|
|
116
|
+
opts.vrni = 'firme';
|
|
117
|
+
console.log('Nastavljeno: vraca samo firme');
|
|
118
|
+
printCurrentOptions(opts);
|
|
119
|
+
prompt();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (trimmed === 'i') {
|
|
123
|
+
opts.vrni = 'imena';
|
|
124
|
+
console.log('Nastavljeno: vraca samo imena');
|
|
125
|
+
printCurrentOptions(opts);
|
|
126
|
+
prompt();
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (trimmed === 'o') {
|
|
130
|
+
opts.vrni = 'oboje';
|
|
131
|
+
console.log('Nastavljeno: vraca oboje');
|
|
132
|
+
printCurrentOptions(opts);
|
|
133
|
+
prompt();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (trimmed === '1') {
|
|
137
|
+
opts.limit = 1;
|
|
138
|
+
console.log('Nastavljeno: vrne samo en rezultat');
|
|
139
|
+
printCurrentOptions(opts);
|
|
140
|
+
prompt();
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (trimmed === 'n') {
|
|
144
|
+
opts.limit = LIMIT;
|
|
145
|
+
console.log('Nastavljeno: vrne vec rezultatov');
|
|
146
|
+
printCurrentOptions(opts);
|
|
147
|
+
prompt();
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (trimmed === 'd') {
|
|
151
|
+
printCurrentOptions(opts);
|
|
152
|
+
prompt();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (trimmed === 'b') {
|
|
156
|
+
opts.beautify = !opts.beautify;
|
|
157
|
+
console.log(`Nastavljeno: beautify ${opts.beautify ? 'vklopljen' : 'izklopljen'}`);
|
|
158
|
+
printCurrentOptions(opts);
|
|
159
|
+
prompt();
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (trimmed === '?' || trimmed === 'help') {
|
|
163
|
+
printInteractiveHelp();
|
|
164
|
+
printCurrentOptions(opts);
|
|
165
|
+
prompt();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (trimmed.length === 0) {
|
|
169
|
+
prompt();
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// Search
|
|
173
|
+
const result = izlusci(trimmed, opts);
|
|
174
|
+
if (typeof result === 'string') {
|
|
175
|
+
console.log(result);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
console.log(JSON.stringify(result, null, 2));
|
|
179
|
+
}
|
|
180
|
+
prompt();
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
prompt();
|
|
184
|
+
}
|
|
185
|
+
main().catch(err => {
|
|
186
|
+
console.error('Napaka:', err);
|
|
187
|
+
process.exit(1);
|
|
188
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { createInterface } from 'readline';
|
|
3
|
+
import { urediImePriimek } from '../urediImePriimek.mjs';
|
|
4
|
+
async function ask(prompt) {
|
|
5
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
6
|
+
return await new Promise(resolve => {
|
|
7
|
+
rl.question(prompt, answer => {
|
|
8
|
+
rl.close();
|
|
9
|
+
resolve(answer);
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async function main() {
|
|
14
|
+
const arg = process.argv[2];
|
|
15
|
+
const input = arg && String(arg).trim().length > 0 ? String(arg) : await ask('Vnesite ime (ime in/ali priimek): ');
|
|
16
|
+
const result = urediImePriimek(input);
|
|
17
|
+
if (typeof result === 'string') {
|
|
18
|
+
console.log(result);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// pretty-print object result
|
|
22
|
+
console.log(JSON.stringify(result, null, 2));
|
|
23
|
+
}
|
|
24
|
+
main().catch(err => {
|
|
25
|
+
console.error('Napaka:', err);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
-
import { urediImePriimek } from '../urediImePriimek.
|
|
2
|
+
import { urediImePriimek } from '../urediImePriimek.mjs';
|
|
3
3
|
describe('urediImePriimek', () => {
|
|
4
4
|
it('should parse "Jurij Tomaž"', () => {
|
|
5
5
|
const result = urediImePriimek('Jurij Tomaž');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { binarySearch } from './utils/binarySearch.
|
|
2
|
-
import { normalizeWordOrSeparator } from './utils/normalizeWordOrSeparator.
|
|
3
|
-
import { getSortedFemaleNames, getSortedMaleNames, getSortedSurnames } from './utils/normalizirano.
|
|
4
|
-
import { tokenizeIme } from './utils/tokenizeIme.
|
|
1
|
+
import { binarySearch } from './utils/binarySearch.mjs';
|
|
2
|
+
import { normalizeWordOrSeparator } from './utils/normalizeWordOrSeparator.mjs';
|
|
3
|
+
import { getSortedFemaleNames, getSortedMaleNames, getSortedSurnames } from './utils/normalizirano.mjs';
|
|
4
|
+
import { tokenizeIme } from './utils/tokenizeIme.mjs';
|
|
5
5
|
function getPatternCharForWord(word) {
|
|
6
6
|
const isMaleName = binarySearch(getSortedMaleNames(), word) && 4 || 0;
|
|
7
7
|
const isFemaleName = binarySearch(getSortedFemaleNames(), word) && 2 || 0;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { normalizeWordOrSeparator } from "./normalizeWordOrSeparator.
|
|
1
|
+
import { normalizeWordOrSeparator } from "./normalizeWordOrSeparator.mjs";
|
|
2
2
|
export const LegalFormSuffixes = ['d.o.o.', 'd.d.', 's.p.', 'z.o.o.', 'k.d.'];
|
|
3
3
|
export const LegalFormSuffixesNormalized = LegalFormSuffixes.map(l => normalizeWordOrSeparator(l, false));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { normalizeWordOrSeparator } from './normalizeWordOrSeparator.
|
|
1
|
+
import { normalizeWordOrSeparator } from './normalizeWordOrSeparator.mjs';
|
|
2
2
|
/**
|
|
3
3
|
* Return sorted deduplicated list of normalized words
|
|
4
4
|
* Split names like Ana Marija or Ana-Marija into two names ['ana','marija']
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { normalizeListOfNames } from "./normalizeListOfNames.
|
|
2
|
-
import { LegalFormSuffixesNormalized } from "./LegalFormSuffixes.
|
|
1
|
+
import { normalizeListOfNames } from "./normalizeListOfNames.mjs";
|
|
2
|
+
import { LegalFormSuffixesNormalized } from "./LegalFormSuffixes.mjs";
|
|
3
3
|
const MIN_WORD_NAME_FOR_SEARCH = 4;
|
|
4
4
|
export function normalizeStringForSearch(list, sort = false) {
|
|
5
5
|
let res = normalizeListOfNames(list.split(" "), true).filter((a) => LegalFormSuffixesNormalized.includes(a)
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Normalization utilities for searching names and firms.
|
|
3
3
|
* Uses lazy initialization and binary search for performance.
|
|
4
4
|
*/
|
|
5
|
-
import { imenaM } from '../data/imenaM.
|
|
6
|
-
import { imenaZ } from '../data/imenaZ.
|
|
7
|
-
import { priimki } from '../data/priimki.
|
|
8
|
-
import { normalizeListOfNames } from './normalizeListOfNames.
|
|
5
|
+
import { imenaM } from '../data/imenaM.mjs';
|
|
6
|
+
import { imenaZ } from '../data/imenaZ.mjs';
|
|
7
|
+
import { priimki } from '../data/priimki.mjs';
|
|
8
|
+
import { normalizeListOfNames } from './normalizeListOfNames.mjs';
|
|
9
9
|
// ============================================================================
|
|
10
10
|
// Lazy-initialized pre-normalized sorted arrays for binary search
|
|
11
11
|
// ============================================================================
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import firmeDbJson from "../../data/firmeDb.json" with { type: "json" };
|
|
2
|
-
import { PravnaOsebaInternal } from "../types/PravnaOseba.
|
|
2
|
+
import { PravnaOsebaInternal } from "../types/PravnaOseba.mjs";
|
|
3
3
|
|
|
4
4
|
export interface FirmeDbSortedArrays {
|
|
5
5
|
readonly firma: readonly string[];
|
package/src/index.mts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { imenaM } from './data/imenaM.mjs';
|
|
2
|
+
export { imenaZ } from './data/imenaZ.mjs';
|
|
3
|
+
export { priimki } from './data/priimki.mjs';
|
|
4
|
+
export { izlusci, type IzlusciResult, type IzlusciOptions, type OsebaResult } from './izlusci.mjs';
|
|
5
|
+
export { urediImePriimek } from './urediImePriimek.mjs';
|
|
6
|
+
export { poisciFirme, type FirmaResult, type PoisciFirmoOptions } from './poisciFirme.mjs';
|
|
7
|
+
export { davcnaZaMaticno } from './davcnaZaMaticno.mjs';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as readline from 'readline';
|
|
3
|
-
import {
|
|
4
|
-
import { PravnaOsebaInternal } from '../types/PravnaOseba.
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
3
|
+
import { IN_OPSI_PRS_CSV, OUT_NORM_FIRME_DB_JSON } from '../0-file-locations.mjs';
|
|
4
|
+
import { PravnaOsebaInternal } from '../types/PravnaOseba.mjs';
|
|
5
|
+
import { findAny } from '../utils/findAny.mjs';
|
|
6
|
+
import { LegalFormSuffixesNormalized } from '../utils/LegalFormSuffixes.mjs';
|
|
7
|
+
import { normalizeStringForSearch } from '../utils/normalizeStringForSearch.mjs';
|
|
8
|
+
import { ObjectSortedListsMapper } from '../utils/ObjectSortedListsMapper.mjs';
|
|
9
9
|
|
|
10
|
-
const MAX_LIMIT = 0
|
|
10
|
+
const MAX_LIMIT = undefined; // 0 just writes the structure, use undefined to export everything.
|
|
11
11
|
|
|
12
12
|
async function parseCSV() {
|
|
13
13
|
|
|
@@ -67,12 +67,15 @@ async function parseCSV() {
|
|
|
67
67
|
legalDesignation,
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
|
|
71
|
+
if (MAX_LIMIT !== 0) {
|
|
72
|
+
objStringMapper.add(oseba);
|
|
73
|
+
pravneOsebe.push(oseba);
|
|
74
|
+
}
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
//Limit to prevent memory issues - remove this if you want all records
|
|
75
|
-
if (MAX_LIMIT && pravneOsebe.length >= MAX_LIMIT) {
|
|
78
|
+
if (MAX_LIMIT!==undefined && pravneOsebe.length >= MAX_LIMIT) {
|
|
76
79
|
console.log(`Reached ${MAX_LIMIT} records limit`);
|
|
77
80
|
break;
|
|
78
81
|
}
|
|
@@ -96,13 +99,14 @@ async function parseCSV() {
|
|
|
96
99
|
firme: pravneOsebe
|
|
97
100
|
};
|
|
98
101
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
const json = (MAX_LIMIT!==undefined && MAX_LIMIT<20)
|
|
103
|
+
? JSON.stringify(jsonData, null, 4)
|
|
104
|
+
: JSON.stringify(jsonData);
|
|
105
|
+
|
|
106
|
+
fs.writeFileSync(OUT_NORM_FIRME_DB_JSON, json);
|
|
103
107
|
|
|
104
|
-
const stats = fs.statSync(
|
|
105
|
-
console.log(`Written to ${
|
|
108
|
+
const stats = fs.statSync(OUT_NORM_FIRME_DB_JSON);
|
|
109
|
+
console.log(`Written to ${OUT_NORM_FIRME_DB_JSON} (${(stats.size / 1024 / 1024).toFixed(1)} MB)`);
|
|
106
110
|
}
|
|
107
111
|
|
|
108
112
|
parseCSV().catch(console.error);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { normalizeListOfNames } from "./utils/normalizeListOfNames.js";
|
|
1
|
+
import { FirmaResult, poisciFirme } from "./poisciFirme.mjs";
|
|
2
|
+
import { urediImePriimek } from "./urediImePriimek.mjs";
|
|
3
|
+
import { findAny } from "./utils/findAny.mjs";
|
|
4
|
+
import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
|
|
5
|
+
import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* Options controlling how `izlusci` searches and returns firm data.
|
|
@@ -65,8 +64,11 @@ export function izlusci(vhodnoIme: string, opcije?: IzlusciOptions): IzlusciResu
|
|
|
65
64
|
let vrniFirme = !opcije?.vrni || opcije.vrni === "firme" || opcije.vrni === "oboje";
|
|
66
65
|
let vrniImena = !opcije?.vrni || opcije.vrni === "imena" || opcije.vrni === "oboje";
|
|
67
66
|
|
|
67
|
+
const normalized = normalizeStringForSearch(vhodnoIme);
|
|
68
|
+
const legalDesignation = findAny(LegalFormSuffixesNormalized, normalized);
|
|
69
|
+
|
|
68
70
|
let najdeneFirme = vrniFirme && poisciFirme(vhodnoIme, { limit: opcije?.limit }) || undefined;
|
|
69
|
-
let urejenoIme = vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
|
|
71
|
+
let urejenoIme = !legalDesignation && vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
|
|
70
72
|
|
|
71
73
|
if (urejenoIme && typeof urejenoIme === "object") {
|
|
72
74
|
if (!urejenoIme.ime || !urejenoIme.priimek) urejenoIme = undefined;
|
|
@@ -91,3 +93,7 @@ export function izlusci(vhodnoIme: string, opcije?: IzlusciOptions): IzlusciResu
|
|
|
91
93
|
return vhodnoIme;
|
|
92
94
|
|
|
93
95
|
}
|
|
96
|
+
|
|
97
|
+
console.log(``, JSON.stringify(
|
|
98
|
+
izlusci("Primož krajnik sp")
|
|
99
|
+
, null, 4));
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { clone } from "cry-helpers";
|
|
2
|
-
import { firmeDb } from "./data/firmeDb.
|
|
3
|
-
import { PravnaOseba, PravnaOsebaInternal } from "./types/PravnaOseba.
|
|
4
|
-
import { findAny } from "./utils/findAny.
|
|
5
|
-
import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.
|
|
6
|
-
import { normalizeListOfNames } from "./utils/normalizeListOfNames.
|
|
7
|
-
import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.
|
|
8
|
-
import { DOLZINA_MATICNE } from "./0-file-locations.
|
|
9
|
-
|
|
10
|
-
const TIMING =
|
|
2
|
+
import { firmeDb } from "./data/firmeDb.mjs";
|
|
3
|
+
import { PravnaOseba, PravnaOsebaInternal } from "./types/PravnaOseba.mjs";
|
|
4
|
+
import { findAny } from "./utils/findAny.mjs";
|
|
5
|
+
import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
|
|
6
|
+
import { normalizeListOfNames } from "./utils/normalizeListOfNames.mjs";
|
|
7
|
+
import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
|
|
8
|
+
import { DOLZINA_MATICNE } from "./0-file-locations.mjs";
|
|
9
|
+
|
|
10
|
+
const TIMING = false;
|
|
11
11
|
export interface FirmaResult {
|
|
12
12
|
firma: string;
|
|
13
13
|
pravnaOseba?: PravnaOseba & { oblikaString?: string };
|