taraskevizer 1.5.2 → 1.6.0

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/README.md CHANGED
@@ -7,21 +7,24 @@ $ npm i taraskevizer
7
7
  ## Usage
8
8
 
9
9
  ```js
10
- import { taraskSync, tarask } from 'taraskevizer';
10
+ import { tarask, ALPHABET } from 'taraskevizer';
11
11
 
12
- const result = taraskSync(text);
12
+ const result = tarask(text);
13
13
  // or
14
- const result = await tarask(text);
14
+ const result = tarask(text, {
15
+ html: {
16
+ abc: ALPHABET.ARABIC,
17
+ g: false,
18
+ // ...
19
+ },
20
+ nonHtml: false,
21
+ });
15
22
  ```
16
23
 
17
24
  ## API
18
25
 
19
26
  ### tarask(text, options?)
20
27
 
21
- Returns a `Promise<string>`
22
-
23
- ### taraskSync(text, options?)
24
-
25
28
  Returns a `string`
26
29
 
27
30
  #### text
package/dist/index.cjs CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -23,8 +24,7 @@ __export(src_exports, {
23
24
  J: () => J,
24
25
  VARIATION: () => VARIATION,
25
26
  gobj: () => gobj,
26
- tarask: () => tarask,
27
- taraskSync: () => taraskSync
27
+ tarask: () => tarask
28
28
  });
29
29
  module.exports = __toCommonJS(src_exports);
30
30
 
@@ -308,15 +308,17 @@ var rawArabLetters = [
308
308
  ];
309
309
 
310
310
  // src/dict/index.ts
311
- var els1 = [];
312
- els1[0] = "сканд|ванад|рубід|род|ірыд|рэзэрфорд|";
313
- els1[1] = "стронц|бар|цэр|лютэц|самар| тор|амэрыц|кальц|кюр|дармштат|лівэрмор|натр";
314
- els1[2] = els1[1] + "тэхнэц|прамэт|майтнэр|капэрніц";
315
- els1[3] = els1[0] + "паляд|" + els1[2];
316
- var els2 = [];
317
- els2[0] = "алюмін|магн|крэмн|цыркон|ніоб|рутэн|кадм|гафн|рэн|осм|эўроп|гандалін|тэрб|дыспроз|гольм| эрб|ітэрб|актын|пратактын|нэптун|плютон|фэрм|ляўрэнс|дубн|рэнтген|ніхон";
318
- els2[1] = els2[0] + "|айнштайн|мендзялев|сыборг|гас|флеров";
319
- var els3 = " гал|бэрыл|тул|бэркл|набэл";
311
+ var chemicalElements1 = [
312
+ "сканд|ванад|рубід|род|ірыд|рэзэрфорд",
313
+ "стронц|бар|цэр|лютэц|самар| тор|амэрыц|кальц|кюр|дармштат|лівэрмор|натр"
314
+ ];
315
+ chemicalElements1[2] = chemicalElements1[1] + "|тэхнэц|прамэт|майтнэр|капэрніц";
316
+ chemicalElements1[3] = chemicalElements1[0] + "|паляд|" + chemicalElements1[2];
317
+ var chemicalElements2 = [
318
+ "алюмін|магн|крэмн|цыркон|ніоб|рутэн|кадм|гафн|рэн|осм|эўроп|гандалін|тэрб|дыспроз|гольм| эрб|ітэрб|актын|пратактын|нэптун|плютон|фэрм|ляўрэнс|дубн|рэнтген|ніхон"
319
+ ];
320
+ chemicalElements2[1] = chemicalElements2[0] + "|айнштайн|мендзялев|сыборг|гас|флеров";
321
+ var chemicalElements3 = " гал|бэрыл|тул|бэркл|набэл";
320
322
  var toOneLine = (str) => str.replace(/\n/g, "|");
321
323
  var ia = (word, words) => ` ${word} (?=\\(?(?:[бвгджзйклмнпстфцчшў]*[оё]|${words.replace(/\(/g, "(?:")}|${iwords}))`;
322
324
  var iwords = toOneLine(`і(
@@ -432,7 +434,6 @@ var rawWordlist = [
432
434
  [/алка(?=г[ао]|ло)/, "алька"],
433
435
  [/алфавіт/, "альфабэт"],
434
436
  [/алхім/, "альхім"],
435
- [/ альцгеймер/, " альцгаймэр"],
436
437
  // [/аланд/, 'алянд'],
437
438
  // [/ала/, 'аля'], TODO: аля-
438
439
  [/амбулатор/, "амбулятор"],
@@ -905,6 +906,7 @@ var rawWordlist = [
905
906
  [/марцінке/, "марці�нке"],
906
907
  [/марцінес/, "мартынэс"],
907
908
  [/марцін/, "мартын"],
909
+ [/ марыянет/, " марыянэт"],
908
910
  // [/морэл/, 'марэл'],
909
911
  // [/абрыкосав/, '($&|марэлев)'],
910
912
  // [/[іы] абрыкос /, '(ая|ую) марэ(ля|лю) '],
@@ -1219,7 +1221,7 @@ var rawWordlist = [
1219
1221
  [/ трыа /, " трыё "],
1220
1222
  // [/трыўмф/, 'трыюмф'],
1221
1223
  [/цю(?=баж|бінг|льпан|рбан)/, "ту"],
1222
- [/(?<men>ар|бізнэс|да|рэкардс|спартс|турк)мен/, "$<men>мэн"],
1224
+ [/(ар|бізнэс|да|рэкардс|спартс|турк)мен/, "$1мэн"],
1223
1225
  [/цюрынгі(?=\S)/, "турынґі"],
1224
1226
  [/ цюрынг/, " тʼюрынґ"],
1225
1227
  [/турцыя/, "тур(цыя|эччына)"],
@@ -1514,30 +1516,35 @@ var rawWordlist = [
1514
1516
  [/ гэлій /, " (гэ|г�е)(ль|лі) "],
1515
1517
  [/ гэлі(?=[юя] |е)/, " (гэ|г�е)л"],
1516
1518
  [/ гэліі /, " (гэ|г�е)ле "],
1517
- [`(?<el>${els1[0] + els1[1]}|інд|франц|рад)ый `, "$<el> "],
1518
- [`(?<el>${els1[3]})ы[ея]`, "$<el>а"],
1519
- [`(?<el>${els1[3]})ыю`, "$<el>у"],
1520
- [`(?<el>${els1[3]}|рад)ыі`, "$<el>зе"],
1521
- [`(?<el>${els1[2]})ыі`, "$<el>ы"],
1522
- [`(${els2[0]}|герман)ій`, "$1"],
1523
- [`(${els2[1]})і[ея]`, "$1а"],
1524
- [`(${els2[1]})ію`, "$1у"],
1525
- [`(${els3}| тал)ій `, "$1ь "],
1519
+ [`(${chemicalElements1[0] + chemicalElements1[1]}|інд|франц|рад)ый `, "$1 "],
1520
+ [`(${chemicalElements1[3]})ы[ея]`, "$1а"],
1521
+ [`(${chemicalElements1[3]})ыю`, "$1у"],
1522
+ [`(${chemicalElements1[3]}|рад)ыі`, "$1зе"],
1523
+ [`(${chemicalElements1[2]})ыі`, "$1ы"],
1524
+ [`(${chemicalElements2[0]}|герман)ій`, "$1"],
1525
+ [`(${chemicalElements2[1]})і[ея]`, "$1а"],
1526
+ [`(${chemicalElements2[1]})ію`, "$1у"],
1527
+ [`(${chemicalElements3}| тал)ій `, "$1ь "],
1526
1528
  [/ таліе/, " тале"],
1527
- [`(?<els3>${els3})і(?=[юя] |е)`, "$1<els3>"],
1528
- [`(${els3})іі `, "$1е "],
1529
+ [`(${chemicalElements3})і(?=[юя] |е)`, "$1"],
1530
+ [`(${chemicalElements3})іі `, "$1е "],
1529
1531
  /* ер > эр */
1530
1532
  [/(антрэпрэн|бакс|грав|грым|гіпнатыз|паз|партн|плян|прыз|рэжыс|рэзан|сап|сутэн|трас|фантаз)ёр/, "$1эр"],
1531
1533
  [/(біле|брэ|ман|мушке|(ім|рэ|транс|экс)пар|салі)цёр/, "$1тэр"],
1532
1534
  [/(вальты|коміваяж|фура)жор/, "$1жэр"],
1533
1535
  [/(каска|мара|фура)дзёр/, "$1дэр"],
1534
1536
  [/браўз[еа]р/, "браўз(э|а)р"],
1535
- [/(?<ar>дыскаўнт|ляйт|мэлянж|пражэкт)ар/, "$<ar>(э|а)р"],
1536
- [/(?<eor>парфум|фраз)[её]р/, "$<eor>эр"],
1537
- [/(?<er>абсорб|акцыян|альб|амп|апазыцыян| вэзэр|гіп|дызайн|імп|інжын|каба-в|кам|кандыцыян|кіб|легіян|мільян|піян|пфайф|пэнсіян|рэвалюцыян|рэф|скан|скв|снайп| суп|сф|тайм| тап|трэн)ер/, "$<er>эр"],
1537
+ [/(дыскаўнт|ляйт|мэлянж|пражэкт)ар/, "$1(э|а)р"],
1538
+ [/(парфум|фраз)[её]р/, "$1эр"],
1539
+ [/(абсорб|акцыян|альб|амп|апазыцыян| вэзэр|гіп|дызайн|імп|інжын|каба-в|кам|кандыцыян|кіб|легіян|мільян|піян|пфайф|пэнсіян|рэвалюцыян|рэф|скан|скв|снайп| суп|сф|тайм| тап|трэн)ер/, "$1эр"],
1538
1540
  // Вэзэр - Места
1539
1541
  [/ супэрні/, " суперні"],
1540
1542
  [/(вах|ліф|шах)цёр/, "$1тар"],
1543
+ /* Імёны */
1544
+ [/ альцгеймер/, " альцгаймэр"],
1545
+ [/ веерштрас/, " ваерштрас"],
1546
+ [/ лейбніц/, " ляйбніц"],
1547
+ [/ нейман/, " нойман"],
1541
1548
  /* Імёны з лаціны */
1542
1549
  [/ понцій/, " понтыюс"],
1543
1550
  [/ понці/, " понты"],
@@ -1552,17 +1559,17 @@ var rawWordlist = [
1552
1559
  /* -ір- */
1553
1560
  [/блакір(?=[аоу])/, "блякір"],
1554
1561
  [/арыенцір(?=[ауы] |а[мў] |амі? )/, "арыентыр"],
1555
- [/(?<ir>абстраг|акліматыз|акуп|(?:а|нацыя)наліз|баз|балянс|бляк|ваеніз|груп|імпан|імправіз|інсцэн|інфарм|іраніз|каляніз|каляпс|каталіз|культыв|курс|ма[рс]к|нэрв|плян|прагназ|праграм|прыватыз|рэаг|санкцыян|скан|трэн|тыпіз|урбаніз|фантаз|фарм|фінанс|фраз|функцыян)ір(?=[ау])/, "$<ir>"],
1556
- [/(?<ir>анке|арыен|дыску|дэб[аю]|(?:ім|экс)пар|праек|інспэк|кантак|кансуль|паразі|тэс|фарма|цы)цір(?=[ау])/, "$<ir>т"],
1557
- [/(?<ir>дэгра|ка|лікві)дзір(?=[ау])/, "$<ir>д"],
1558
- [/(?<yr>ангаж|дэкляр|ігнар|тыраж|фініш|генэр)ыр(?=[ау])/, "$<yr>"],
1559
- [/(?<yr>інду|кваліфі|права|фальсыфі)цыр(?=[ау])/, "$<yr>к"],
1560
- [/(?<ir>кап|прэм)іра/, "$<ir>ія"],
1561
- [/(?<ir>кап|прэм)іру/, "$<ir>ію"],
1562
- [/(?<ir>дуб|кантра|капіту|прафі|пэда)ліра/, "$<ir>ля"],
1563
- [/(?<ir>дуб|кантра|капіту|прафі|пэда)ліру/, "$<ir>лю"],
1564
- [/(?<ir>ініцы|канстру|тату)іра/, "$<ir>я"],
1565
- [/(?<ir>ініцы|канстру|тату)іру/, "$<ir>ю"],
1562
+ [/(абстраг|акліматыз|акуп|(?:а|нацыя)наліз|баз|балянс|бляк|ваеніз|груп|імпан|імправіз|інсцэн|інфарм|іраніз|каляніз|каляпс|каталіз|культыв|курс|ма[рс]к|нэрв|плян|прагназ|праграм|прыватыз|рэаг|санкцыян|скан|трэн|тыпіз|урбаніз|фантаз|фарм|фінанс|фраз|функцыян)ір(?=[ау])/, "$1"],
1563
+ [/(анке|арыен|дыску|дэб[аю]|(?:ім|экс)пар|праек|інспэк|кантак|кансуль|паразі|тэс|фарма|цы)цір(?=[ау])/, "$1т"],
1564
+ [/(дэгра|ка|лікві)дзір(?=[ау])/, "$1д"],
1565
+ [/(ангаж|дэкляр|ігнар|тыраж|фініш|генэр)ыр(?=[ау])/, "$1"],
1566
+ [/(інду|кваліфі|права|фальсыфі)цыр(?=[ау])/, "$1к"],
1567
+ [/(кап|прэм)іра/, "$1ія"],
1568
+ [/(кап|прэм)іру/, "$1ію"],
1569
+ [/(дуб|кантра|капіту|прафі|пэда)ліра/, "$1ля"],
1570
+ [/(дуб|кантра|капіту|прафі|пэда)ліру/, "$1лю"],
1571
+ [/(ініцы|канстру|тату)іра/, "$1я"],
1572
+ [/(ініцы|канстру|тату)іру/, "$1ю"],
1566
1573
  [/(бляк|балянс|інсцэн|плян|трэн|фарм)іроўкай/, "$1аваньнем"],
1567
1574
  [/(бляк|балянс|інсцэн|плян|трэн|фарм)іроўка/, "$1аваньне"],
1568
1575
  [/(бляк|балянс|інсцэн|плян|трэн|фарм)іроўкі/, "$1аваньня"],
@@ -1833,11 +1840,11 @@ var rawWordlist = [
1833
1840
  /* Іншае */
1834
1841
  [/(кібер|фа)неты(?=[кч])/, "$1нэты"],
1835
1842
  [/цій /, "(цій|ці) "],
1836
- // [/(?<a>андрэс\S* цэльсі)й/, '$<a>юс'],
1837
- // [/(?<a>андрэс\S* цэльсі)ем/, '$<a>юсам'],
1838
- // [/(?<a>андрэс\S* цэльсі)[яе]/, '$<a>юса'],
1839
- // [/(?<a>андрэс\S* цэльсі)і/, '$<a>юсе'],
1840
- // [/(?<a>андрэс\S* цэльсі)ю/, '$<a>юсу'],
1843
+ // [/(андрэс\S* цэльсі)й/, '$1юс'],
1844
+ // [/(андрэс\S* цэльсі)ем/, '$1юсам'],
1845
+ // [/(андрэс\S* цэльсі)[яе]/, '$1юса'],
1846
+ // [/(андрэс\S* цэльсі)і/, '$1юсе'],
1847
+ // [/(андрэс\S* цэльсі)ю/, '$1юсу'],
1841
1848
  [/пёрл - харбар/, "пэрл - гарбар"],
1842
1849
  [/рымска - кат/, "рыма - кат"],
1843
1850
  [/ іата /, " і�ата "],
@@ -2111,6 +2118,7 @@ var getLastLetter = (word) => {
2111
2118
  for (let i = word.length - 1; i >= 0; i--)
2112
2119
  if (/\p{L}/u.test(word[i]))
2113
2120
  return word[i];
2121
+ throw new Error(`the last letter of the word ${word} not found`);
2114
2122
  };
2115
2123
  var NOFIX_CHAR = " ￿ ";
2116
2124
  var NOFIX_REGEX = new RegExp(NOFIX_CHAR, "g");
@@ -2153,7 +2161,7 @@ var afterTarask = [
2153
2161
  ($0, $1, $2) => /([ая]ў|ну)$/.test($2) ? $1 + "ь і" + $2 : $0
2154
2162
  ]
2155
2163
  ];
2156
- var taraskSync = (text, options = {}) => {
2164
+ var tarask = (text, options = {}) => {
2157
2165
  const { abc = 0, j = 0, html = false, nonHtml = false } = options;
2158
2166
  const isHtmlObject = isObject(html);
2159
2167
  const isNonHtmlObject = isObject(nonHtml);
@@ -2210,12 +2218,15 @@ var taraskSync = (text, options = {}) => {
2210
2218
  }
2211
2219
  }
2212
2220
  if (gReplacer)
2213
- text = text.replace(G_REGEX, gReplacer);
2221
+ text = text.replace(
2222
+ G_REGEX,
2223
+ // @ts-ignore
2224
+ gReplacer
2225
+ );
2214
2226
  if (noFix.length)
2215
2227
  text = text.replace(NOFIX_REGEX, () => noFix.shift());
2216
2228
  return (html ? finalizer.html(text) : finalizer.nonHtml(text, nonHtml)).trim();
2217
2229
  };
2218
- var tarask = (...args) => new Promise((res) => res(taraskSync(...args)));
2219
2230
  var restoreCase = (text, orig) => {
2220
2231
  for (let i = 0; i < text.length; i++) {
2221
2232
  const word = text[i];
@@ -2327,7 +2338,7 @@ var finalizer = {
2327
2338
  return `<tarL data-l='${options}'>${main}</tarL>`;
2328
2339
  }).replace(/ \n /g, "<br>"),
2329
2340
  nonHtml(text, options) {
2330
- if (isObject(options) && options.variations !== VARIATION.ALL) {
2341
+ if (isObject(options) && options.variations && options.variations !== VARIATION.ALL) {
2331
2342
  const WORD_INDEX = options.variations;
2332
2343
  const replacer = ($0) => $0.slice(1, -1).split("|")[WORD_INDEX];
2333
2344
  text = text.replace(
@@ -2344,6 +2355,5 @@ var finalizer = {
2344
2355
  J,
2345
2356
  VARIATION,
2346
2357
  gobj,
2347
- tarask,
2348
- taraskSync
2358
+ tarask
2349
2359
  });
package/dist/index.d.cts CHANGED
@@ -1,4 +1,3 @@
1
- type Promisify<T> = T extends (...args: infer TArgs) => infer TReturn ? (...args: TArgs) => Promise<TReturn> : never;
2
1
  type AnyFn = (...args: any[]) => any;
3
2
  type DeepPartial<T> = T extends object ? T extends AnyFn ? T : {
4
3
  [P in keyof T]?: DeepPartial<T[P]>;
@@ -25,7 +24,6 @@ type TaraskOptionsStrict = {
25
24
  };
26
25
  type TaraskOptions = DeepPartial<TaraskOptionsStrict>;
27
26
  type Tarask = (text: string, options?: TaraskOptions) => string;
28
- type TaraskAsync = Promisify<Tarask>;
29
27
  type Dict<T = RegExp> = [T, string][];
30
28
  type ExtendedDict = [
31
29
  RegExp,
@@ -36,23 +34,22 @@ type AlphabetDependentDict = {
36
34
  };
37
35
 
38
36
  declare const ALPHABET: {
39
- CYRILLIC: number;
40
- LATIN: number;
41
- ARABIC: number;
42
- GREEK: number;
37
+ readonly CYRILLIC: 0;
38
+ readonly LATIN: 1;
39
+ readonly ARABIC: 2;
40
+ readonly GREEK: 3;
43
41
  };
44
42
  declare const J: {
45
- NEVER: number;
46
- RANDOM: number;
47
- ALWAYS: number;
43
+ readonly NEVER: 0;
44
+ readonly RANDOM: 1;
45
+ readonly ALWAYS: 2;
48
46
  };
49
47
  declare const VARIATION: {
50
- NO: number;
51
- FIRST: number;
52
- ALL: number;
48
+ readonly NO: 0;
49
+ readonly FIRST: 1;
50
+ readonly ALL: 2;
53
51
  };
54
- declare const taraskSync: Tarask;
55
- declare const tarask: TaraskAsync;
52
+ declare const tarask: Tarask;
56
53
 
57
54
  declare const gobj: {
58
55
  readonly г: "ґ";
@@ -61,4 +58,4 @@ declare const gobj: {
61
58
  readonly Ґ: "Г";
62
59
  };
63
60
 
64
- export { ALPHABET, AlphabetDependentDict, Dict, ExtendedDict, HtmlOptions, J, NonHtmlOptions, ReplaceWithDict, Tarask, TaraskAsync, TaraskOptions, TaraskOptionsStrict, ToTarask, VARIATION, gobj, tarask, taraskSync };
61
+ export { ALPHABET, AlphabetDependentDict, Dict, ExtendedDict, HtmlOptions, J, NonHtmlOptions, ReplaceWithDict, Tarask, TaraskOptions, TaraskOptionsStrict, ToTarask, VARIATION, gobj, tarask };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- type Promisify<T> = T extends (...args: infer TArgs) => infer TReturn ? (...args: TArgs) => Promise<TReturn> : never;
2
1
  type AnyFn = (...args: any[]) => any;
3
2
  type DeepPartial<T> = T extends object ? T extends AnyFn ? T : {
4
3
  [P in keyof T]?: DeepPartial<T[P]>;
@@ -25,7 +24,6 @@ type TaraskOptionsStrict = {
25
24
  };
26
25
  type TaraskOptions = DeepPartial<TaraskOptionsStrict>;
27
26
  type Tarask = (text: string, options?: TaraskOptions) => string;
28
- type TaraskAsync = Promisify<Tarask>;
29
27
  type Dict<T = RegExp> = [T, string][];
30
28
  type ExtendedDict = [
31
29
  RegExp,
@@ -36,23 +34,22 @@ type AlphabetDependentDict = {
36
34
  };
37
35
 
38
36
  declare const ALPHABET: {
39
- CYRILLIC: number;
40
- LATIN: number;
41
- ARABIC: number;
42
- GREEK: number;
37
+ readonly CYRILLIC: 0;
38
+ readonly LATIN: 1;
39
+ readonly ARABIC: 2;
40
+ readonly GREEK: 3;
43
41
  };
44
42
  declare const J: {
45
- NEVER: number;
46
- RANDOM: number;
47
- ALWAYS: number;
43
+ readonly NEVER: 0;
44
+ readonly RANDOM: 1;
45
+ readonly ALWAYS: 2;
48
46
  };
49
47
  declare const VARIATION: {
50
- NO: number;
51
- FIRST: number;
52
- ALL: number;
48
+ readonly NO: 0;
49
+ readonly FIRST: 1;
50
+ readonly ALL: 2;
53
51
  };
54
- declare const taraskSync: Tarask;
55
- declare const tarask: TaraskAsync;
52
+ declare const tarask: Tarask;
56
53
 
57
54
  declare const gobj: {
58
55
  readonly г: "ґ";
@@ -61,4 +58,4 @@ declare const gobj: {
61
58
  readonly Ґ: "Г";
62
59
  };
63
60
 
64
- export { ALPHABET, AlphabetDependentDict, Dict, ExtendedDict, HtmlOptions, J, NonHtmlOptions, ReplaceWithDict, Tarask, TaraskAsync, TaraskOptions, TaraskOptionsStrict, ToTarask, VARIATION, gobj, tarask, taraskSync };
61
+ export { ALPHABET, AlphabetDependentDict, Dict, ExtendedDict, HtmlOptions, J, NonHtmlOptions, ReplaceWithDict, Tarask, TaraskOptions, TaraskOptionsStrict, ToTarask, VARIATION, gobj, tarask };
package/dist/index.js CHANGED
@@ -278,15 +278,17 @@ var rawArabLetters = [
278
278
  ];
279
279
 
280
280
  // src/dict/index.ts
281
- var els1 = [];
282
- els1[0] = "сканд|ванад|рубід|род|ірыд|рэзэрфорд|";
283
- els1[1] = "стронц|бар|цэр|лютэц|самар| тор|амэрыц|кальц|кюр|дармштат|лівэрмор|натр";
284
- els1[2] = els1[1] + "тэхнэц|прамэт|майтнэр|капэрніц";
285
- els1[3] = els1[0] + "паляд|" + els1[2];
286
- var els2 = [];
287
- els2[0] = "алюмін|магн|крэмн|цыркон|ніоб|рутэн|кадм|гафн|рэн|осм|эўроп|гандалін|тэрб|дыспроз|гольм| эрб|ітэрб|актын|пратактын|нэптун|плютон|фэрм|ляўрэнс|дубн|рэнтген|ніхон";
288
- els2[1] = els2[0] + "|айнштайн|мендзялев|сыборг|гас|флеров";
289
- var els3 = " гал|бэрыл|тул|бэркл|набэл";
281
+ var chemicalElements1 = [
282
+ "сканд|ванад|рубід|род|ірыд|рэзэрфорд",
283
+ "стронц|бар|цэр|лютэц|самар| тор|амэрыц|кальц|кюр|дармштат|лівэрмор|натр"
284
+ ];
285
+ chemicalElements1[2] = chemicalElements1[1] + "|тэхнэц|прамэт|майтнэр|капэрніц";
286
+ chemicalElements1[3] = chemicalElements1[0] + "|паляд|" + chemicalElements1[2];
287
+ var chemicalElements2 = [
288
+ "алюмін|магн|крэмн|цыркон|ніоб|рутэн|кадм|гафн|рэн|осм|эўроп|гандалін|тэрб|дыспроз|гольм| эрб|ітэрб|актын|пратактын|нэптун|плютон|фэрм|ляўрэнс|дубн|рэнтген|ніхон"
289
+ ];
290
+ chemicalElements2[1] = chemicalElements2[0] + "|айнштайн|мендзялев|сыборг|гас|флеров";
291
+ var chemicalElements3 = " гал|бэрыл|тул|бэркл|набэл";
290
292
  var toOneLine = (str) => str.replace(/\n/g, "|");
291
293
  var ia = (word, words) => ` ${word} (?=\\(?(?:[бвгджзйклмнпстфцчшў]*[оё]|${words.replace(/\(/g, "(?:")}|${iwords}))`;
292
294
  var iwords = toOneLine(`і(
@@ -402,7 +404,6 @@ var rawWordlist = [
402
404
  [/алка(?=г[ао]|ло)/, "алька"],
403
405
  [/алфавіт/, "альфабэт"],
404
406
  [/алхім/, "альхім"],
405
- [/ альцгеймер/, " альцгаймэр"],
406
407
  // [/аланд/, 'алянд'],
407
408
  // [/ала/, 'аля'], TODO: аля-
408
409
  [/амбулатор/, "амбулятор"],
@@ -875,6 +876,7 @@ var rawWordlist = [
875
876
  [/марцінке/, "марці�нке"],
876
877
  [/марцінес/, "мартынэс"],
877
878
  [/марцін/, "мартын"],
879
+ [/ марыянет/, " марыянэт"],
878
880
  // [/морэл/, 'марэл'],
879
881
  // [/абрыкосав/, '($&|марэлев)'],
880
882
  // [/[іы] абрыкос /, '(ая|ую) марэ(ля|лю) '],
@@ -1189,7 +1191,7 @@ var rawWordlist = [
1189
1191
  [/ трыа /, " трыё "],
1190
1192
  // [/трыўмф/, 'трыюмф'],
1191
1193
  [/цю(?=баж|бінг|льпан|рбан)/, "ту"],
1192
- [/(?<men>ар|бізнэс|да|рэкардс|спартс|турк)мен/, "$<men>мэн"],
1194
+ [/(ар|бізнэс|да|рэкардс|спартс|турк)мен/, "$1мэн"],
1193
1195
  [/цюрынгі(?=\S)/, "турынґі"],
1194
1196
  [/ цюрынг/, " тʼюрынґ"],
1195
1197
  [/турцыя/, "тур(цыя|эччына)"],
@@ -1484,30 +1486,35 @@ var rawWordlist = [
1484
1486
  [/ гэлій /, " (гэ|г�е)(ль|лі) "],
1485
1487
  [/ гэлі(?=[юя] |е)/, " (гэ|г�е)л"],
1486
1488
  [/ гэліі /, " (гэ|г�е)ле "],
1487
- [`(?<el>${els1[0] + els1[1]}|інд|франц|рад)ый `, "$<el> "],
1488
- [`(?<el>${els1[3]})ы[ея]`, "$<el>а"],
1489
- [`(?<el>${els1[3]})ыю`, "$<el>у"],
1490
- [`(?<el>${els1[3]}|рад)ыі`, "$<el>зе"],
1491
- [`(?<el>${els1[2]})ыі`, "$<el>ы"],
1492
- [`(${els2[0]}|герман)ій`, "$1"],
1493
- [`(${els2[1]})і[ея]`, "$1а"],
1494
- [`(${els2[1]})ію`, "$1у"],
1495
- [`(${els3}| тал)ій `, "$1ь "],
1489
+ [`(${chemicalElements1[0] + chemicalElements1[1]}|інд|франц|рад)ый `, "$1 "],
1490
+ [`(${chemicalElements1[3]})ы[ея]`, "$1а"],
1491
+ [`(${chemicalElements1[3]})ыю`, "$1у"],
1492
+ [`(${chemicalElements1[3]}|рад)ыі`, "$1зе"],
1493
+ [`(${chemicalElements1[2]})ыі`, "$1ы"],
1494
+ [`(${chemicalElements2[0]}|герман)ій`, "$1"],
1495
+ [`(${chemicalElements2[1]})і[ея]`, "$1а"],
1496
+ [`(${chemicalElements2[1]})ію`, "$1у"],
1497
+ [`(${chemicalElements3}| тал)ій `, "$1ь "],
1496
1498
  [/ таліе/, " тале"],
1497
- [`(?<els3>${els3})і(?=[юя] |е)`, "$1<els3>"],
1498
- [`(${els3})іі `, "$1е "],
1499
+ [`(${chemicalElements3})і(?=[юя] |е)`, "$1"],
1500
+ [`(${chemicalElements3})іі `, "$1е "],
1499
1501
  /* ер > эр */
1500
1502
  [/(антрэпрэн|бакс|грав|грым|гіпнатыз|паз|партн|плян|прыз|рэжыс|рэзан|сап|сутэн|трас|фантаз)ёр/, "$1эр"],
1501
1503
  [/(біле|брэ|ман|мушке|(ім|рэ|транс|экс)пар|салі)цёр/, "$1тэр"],
1502
1504
  [/(вальты|коміваяж|фура)жор/, "$1жэр"],
1503
1505
  [/(каска|мара|фура)дзёр/, "$1дэр"],
1504
1506
  [/браўз[еа]р/, "браўз(э|а)р"],
1505
- [/(?<ar>дыскаўнт|ляйт|мэлянж|пражэкт)ар/, "$<ar>(э|а)р"],
1506
- [/(?<eor>парфум|фраз)[её]р/, "$<eor>эр"],
1507
- [/(?<er>абсорб|акцыян|альб|амп|апазыцыян| вэзэр|гіп|дызайн|імп|інжын|каба-в|кам|кандыцыян|кіб|легіян|мільян|піян|пфайф|пэнсіян|рэвалюцыян|рэф|скан|скв|снайп| суп|сф|тайм| тап|трэн)ер/, "$<er>эр"],
1507
+ [/(дыскаўнт|ляйт|мэлянж|пражэкт)ар/, "$1(э|а)р"],
1508
+ [/(парфум|фраз)[её]р/, "$1эр"],
1509
+ [/(абсорб|акцыян|альб|амп|апазыцыян| вэзэр|гіп|дызайн|імп|інжын|каба-в|кам|кандыцыян|кіб|легіян|мільян|піян|пфайф|пэнсіян|рэвалюцыян|рэф|скан|скв|снайп| суп|сф|тайм| тап|трэн)ер/, "$1эр"],
1508
1510
  // Вэзэр - Места
1509
1511
  [/ супэрні/, " суперні"],
1510
1512
  [/(вах|ліф|шах)цёр/, "$1тар"],
1513
+ /* Імёны */
1514
+ [/ альцгеймер/, " альцгаймэр"],
1515
+ [/ веерштрас/, " ваерштрас"],
1516
+ [/ лейбніц/, " ляйбніц"],
1517
+ [/ нейман/, " нойман"],
1511
1518
  /* Імёны з лаціны */
1512
1519
  [/ понцій/, " понтыюс"],
1513
1520
  [/ понці/, " понты"],
@@ -1522,17 +1529,17 @@ var rawWordlist = [
1522
1529
  /* -ір- */
1523
1530
  [/блакір(?=[аоу])/, "блякір"],
1524
1531
  [/арыенцір(?=[ауы] |а[мў] |амі? )/, "арыентыр"],
1525
- [/(?<ir>абстраг|акліматыз|акуп|(?:а|нацыя)наліз|баз|балянс|бляк|ваеніз|груп|імпан|імправіз|інсцэн|інфарм|іраніз|каляніз|каляпс|каталіз|культыв|курс|ма[рс]к|нэрв|плян|прагназ|праграм|прыватыз|рэаг|санкцыян|скан|трэн|тыпіз|урбаніз|фантаз|фарм|фінанс|фраз|функцыян)ір(?=[ау])/, "$<ir>"],
1526
- [/(?<ir>анке|арыен|дыску|дэб[аю]|(?:ім|экс)пар|праек|інспэк|кантак|кансуль|паразі|тэс|фарма|цы)цір(?=[ау])/, "$<ir>т"],
1527
- [/(?<ir>дэгра|ка|лікві)дзір(?=[ау])/, "$<ir>д"],
1528
- [/(?<yr>ангаж|дэкляр|ігнар|тыраж|фініш|генэр)ыр(?=[ау])/, "$<yr>"],
1529
- [/(?<yr>інду|кваліфі|права|фальсыфі)цыр(?=[ау])/, "$<yr>к"],
1530
- [/(?<ir>кап|прэм)іра/, "$<ir>ія"],
1531
- [/(?<ir>кап|прэм)іру/, "$<ir>ію"],
1532
- [/(?<ir>дуб|кантра|капіту|прафі|пэда)ліра/, "$<ir>ля"],
1533
- [/(?<ir>дуб|кантра|капіту|прафі|пэда)ліру/, "$<ir>лю"],
1534
- [/(?<ir>ініцы|канстру|тату)іра/, "$<ir>я"],
1535
- [/(?<ir>ініцы|канстру|тату)іру/, "$<ir>ю"],
1532
+ [/(абстраг|акліматыз|акуп|(?:а|нацыя)наліз|баз|балянс|бляк|ваеніз|груп|імпан|імправіз|інсцэн|інфарм|іраніз|каляніз|каляпс|каталіз|культыв|курс|ма[рс]к|нэрв|плян|прагназ|праграм|прыватыз|рэаг|санкцыян|скан|трэн|тыпіз|урбаніз|фантаз|фарм|фінанс|фраз|функцыян)ір(?=[ау])/, "$1"],
1533
+ [/(анке|арыен|дыску|дэб[аю]|(?:ім|экс)пар|праек|інспэк|кантак|кансуль|паразі|тэс|фарма|цы)цір(?=[ау])/, "$1т"],
1534
+ [/(дэгра|ка|лікві)дзір(?=[ау])/, "$1д"],
1535
+ [/(ангаж|дэкляр|ігнар|тыраж|фініш|генэр)ыр(?=[ау])/, "$1"],
1536
+ [/(інду|кваліфі|права|фальсыфі)цыр(?=[ау])/, "$1к"],
1537
+ [/(кап|прэм)іра/, "$1ія"],
1538
+ [/(кап|прэм)іру/, "$1ію"],
1539
+ [/(дуб|кантра|капіту|прафі|пэда)ліра/, "$1ля"],
1540
+ [/(дуб|кантра|капіту|прафі|пэда)ліру/, "$1лю"],
1541
+ [/(ініцы|канстру|тату)іра/, "$1я"],
1542
+ [/(ініцы|канстру|тату)іру/, "$1ю"],
1536
1543
  [/(бляк|балянс|інсцэн|плян|трэн|фарм)іроўкай/, "$1аваньнем"],
1537
1544
  [/(бляк|балянс|інсцэн|плян|трэн|фарм)іроўка/, "$1аваньне"],
1538
1545
  [/(бляк|балянс|інсцэн|плян|трэн|фарм)іроўкі/, "$1аваньня"],
@@ -1803,11 +1810,11 @@ var rawWordlist = [
1803
1810
  /* Іншае */
1804
1811
  [/(кібер|фа)неты(?=[кч])/, "$1нэты"],
1805
1812
  [/цій /, "(цій|ці) "],
1806
- // [/(?<a>андрэс\S* цэльсі)й/, '$<a>юс'],
1807
- // [/(?<a>андрэс\S* цэльсі)ем/, '$<a>юсам'],
1808
- // [/(?<a>андрэс\S* цэльсі)[яе]/, '$<a>юса'],
1809
- // [/(?<a>андрэс\S* цэльсі)і/, '$<a>юсе'],
1810
- // [/(?<a>андрэс\S* цэльсі)ю/, '$<a>юсу'],
1813
+ // [/(андрэс\S* цэльсі)й/, '$1юс'],
1814
+ // [/(андрэс\S* цэльсі)ем/, '$1юсам'],
1815
+ // [/(андрэс\S* цэльсі)[яе]/, '$1юса'],
1816
+ // [/(андрэс\S* цэльсі)і/, '$1юсе'],
1817
+ // [/(андрэс\S* цэльсі)ю/, '$1юсу'],
1811
1818
  [/пёрл - харбар/, "пэрл - гарбар"],
1812
1819
  [/рымска - кат/, "рыма - кат"],
1813
1820
  [/ іата /, " і�ата "],
@@ -2081,6 +2088,7 @@ var getLastLetter = (word) => {
2081
2088
  for (let i = word.length - 1; i >= 0; i--)
2082
2089
  if (/\p{L}/u.test(word[i]))
2083
2090
  return word[i];
2091
+ throw new Error(`the last letter of the word ${word} not found`);
2084
2092
  };
2085
2093
  var NOFIX_CHAR = " ￿ ";
2086
2094
  var NOFIX_REGEX = new RegExp(NOFIX_CHAR, "g");
@@ -2123,7 +2131,7 @@ var afterTarask = [
2123
2131
  ($0, $1, $2) => /([ая]ў|ну)$/.test($2) ? $1 + "ь і" + $2 : $0
2124
2132
  ]
2125
2133
  ];
2126
- var taraskSync = (text, options = {}) => {
2134
+ var tarask = (text, options = {}) => {
2127
2135
  const { abc = 0, j = 0, html = false, nonHtml = false } = options;
2128
2136
  const isHtmlObject = isObject(html);
2129
2137
  const isNonHtmlObject = isObject(nonHtml);
@@ -2180,12 +2188,15 @@ var taraskSync = (text, options = {}) => {
2180
2188
  }
2181
2189
  }
2182
2190
  if (gReplacer)
2183
- text = text.replace(G_REGEX, gReplacer);
2191
+ text = text.replace(
2192
+ G_REGEX,
2193
+ // @ts-ignore
2194
+ gReplacer
2195
+ );
2184
2196
  if (noFix.length)
2185
2197
  text = text.replace(NOFIX_REGEX, () => noFix.shift());
2186
2198
  return (html ? finalizer.html(text) : finalizer.nonHtml(text, nonHtml)).trim();
2187
2199
  };
2188
- var tarask = (...args) => new Promise((res) => res(taraskSync(...args)));
2189
2200
  var restoreCase = (text, orig) => {
2190
2201
  for (let i = 0; i < text.length; i++) {
2191
2202
  const word = text[i];
@@ -2297,7 +2308,7 @@ var finalizer = {
2297
2308
  return `<tarL data-l='${options}'>${main}</tarL>`;
2298
2309
  }).replace(/ \n /g, "<br>"),
2299
2310
  nonHtml(text, options) {
2300
- if (isObject(options) && options.variations !== VARIATION.ALL) {
2311
+ if (isObject(options) && options.variations && options.variations !== VARIATION.ALL) {
2301
2312
  const WORD_INDEX = options.variations;
2302
2313
  const replacer = ($0) => $0.slice(1, -1).split("|")[WORD_INDEX];
2303
2314
  text = text.replace(
@@ -2313,6 +2324,5 @@ export {
2313
2324
  J,
2314
2325
  VARIATION,
2315
2326
  gobj,
2316
- tarask,
2317
- taraskSync
2327
+ tarask
2318
2328
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "taraskevizer",
3
3
  "author": "GooseOb",
4
4
  "license": "MIT",
5
- "version": "1.5.2",
5
+ "version": "1.6.0",
6
6
  "private": false,
7
7
  "homepage": "https://gooseob.github.io/taraskevizatar/",
8
8
  "main": "dist/index.js",
@@ -19,9 +19,10 @@
19
19
  ],
20
20
  "scripts": {
21
21
  "build": "tsup --config build-config/index.js",
22
- "dev": "tsup --config build-config/dev.js --watch",
23
- "dev:build": "tsup --config build-config/dev.js",
24
- "test": "node test",
22
+ "build:bun_EXPERIMENTAL": "bun ./build-config/bun.ts",
23
+ "dev": "esrun --watch=src/*,test/* --send-code-mode=temporaryFile test",
24
+ "dev:bun": "bun test --watch",
25
+ "test": "esrun --send-code-mode=temporaryFile test",
25
26
  "prepare": "husky install"
26
27
  },
27
28
  "repository": {
@@ -37,7 +38,9 @@
37
38
  "belarusian"
38
39
  ],
39
40
  "devDependencies": {
41
+ "@digitak/esrun": "^3.2.24",
40
42
  "@types/node": "^20.5.4",
43
+ "bun-types": "^1.0.1",
41
44
  "husky": "^8.0.3",
42
45
  "prettier": "^3.0.0",
43
46
  "simple-git": "^3.19.1",