taraskevizer 6.1.19 → 7.0.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/dist/index.cjs CHANGED
@@ -22,13 +22,32 @@ var src_exports = {};
22
22
  __export(src_exports, {
23
23
  ALPHABET: () => ALPHABET,
24
24
  REPLACE_J: () => REPLACE_J,
25
- Taraskevizer: () => Taraskevizer,
25
+ TaraskConfig: () => TaraskConfig,
26
26
  VARIATION: () => VARIATION,
27
- __TARASK__: () => for_plugins_exports,
28
- gobj: () => gobj
27
+ abcOnlyPipeline: () => abcOnlyPipeline,
28
+ dicts: () => dict_exports,
29
+ htmlPipeline: () => htmlPipeline,
30
+ lib: () => lib_exports,
31
+ pipelineSteps: () => steps_exports,
32
+ plainTextPipeline: () => plainTextPipeline,
33
+ tarask: () => tarask
29
34
  });
30
35
  module.exports = __toCommonJS(src_exports);
31
36
 
37
+ // src/dict/index.ts
38
+ var dict_exports = {};
39
+ __export(dict_exports, {
40
+ arabLetters: () => arabLetters,
41
+ gobj: () => gobj,
42
+ latinLettersLowerCase: () => latinLettersLowerCase,
43
+ latinLettersLowerCaseJi: () => latinLettersLowerCaseJi,
44
+ latinLettersUpperCase: () => latinLettersUpperCase,
45
+ latinLettersUpperCaseJi: () => latinLettersUpperCaseJi,
46
+ noSoften: () => noSoften,
47
+ softeners: () => softeners,
48
+ wordlist: () => wordlist
49
+ });
50
+
32
51
  // src/dict/lib.ts
33
52
  var dictFrom = {
34
53
  raw: (dict) => {
@@ -2013,31 +2032,142 @@ var softeners = dictFrom.raw([
2013
2032
  [/([сз])ʼ(?=[яюеё])/, "$1ь"]
2014
2033
  ]);
2015
2034
 
2016
- // src/replace-g.ts
2017
- var replaceG = (text, replacer) => text.replace(
2035
+ // src/alphabet.ts
2036
+ var ALPHABET = {
2037
+ LATIN: {
2038
+ lower: latinLettersLowerCase,
2039
+ upper: latinLettersUpperCase
2040
+ },
2041
+ LATIN_JI: {
2042
+ lower: latinLettersLowerCaseJi,
2043
+ upper: latinLettersUpperCaseJi
2044
+ },
2045
+ ARABIC: {
2046
+ lower: arabLetters
2047
+ },
2048
+ CYRILLIC: {
2049
+ lower: [],
2050
+ upper: []
2051
+ }
2052
+ };
2053
+
2054
+ // src/config.ts
2055
+ var TaraskConfig = class {
2056
+ constructor(options) {
2057
+ if (!options)
2058
+ return;
2059
+ for (const [target, source] of [
2060
+ [this.general, options.general],
2061
+ [this.html, options.html],
2062
+ [this.nonHtml, options.nonHtml]
2063
+ ]) {
2064
+ if (source)
2065
+ for (const [key, value] of Object.entries(source)) {
2066
+ if (value !== void 0)
2067
+ target[key] = value;
2068
+ }
2069
+ }
2070
+ }
2071
+ general = {
2072
+ abc: ALPHABET.CYRILLIC,
2073
+ j: REPLACE_J.NEVER,
2074
+ doEscapeCapitalized: true
2075
+ };
2076
+ html = {
2077
+ g: false
2078
+ };
2079
+ nonHtml = {
2080
+ h: false,
2081
+ ansiColors: false,
2082
+ variations: VARIATION.ALL
2083
+ };
2084
+ };
2085
+ var REPLACE_J = {
2086
+ NEVER: 0,
2087
+ RANDOM: 1,
2088
+ ALWAYS: 2
2089
+ };
2090
+ var VARIATION = {
2091
+ NO: 0,
2092
+ FIRST: 1,
2093
+ ALL: 2
2094
+ };
2095
+
2096
+ // src/tarask.ts
2097
+ var tarask = (text, pipeline, cfg = new TaraskConfig()) => {
2098
+ const options = { cfg, storage: {} };
2099
+ return pipeline.reduce((text2, step) => step(text2, options), text);
2100
+ };
2101
+
2102
+ // src/steps/index.ts
2103
+ var steps_exports = {};
2104
+ __export(steps_exports, {
2105
+ applyHtmlG: () => applyHtmlG,
2106
+ applyHtmlVariations: () => applyHtmlVariations,
2107
+ applyNoFix: () => applyNoFix,
2108
+ applyNonHtmlG: () => applyNonHtmlG,
2109
+ applyNonHtmlVariations: () => applyNonHtmlVariations,
2110
+ applyVariableParts: () => applyVariableParts,
2111
+ convertAlphabet: () => convertAlphabet,
2112
+ convertAlphabetLowerCase: () => convertAlphabetLowerCase,
2113
+ highlightDiffNonHtmlStep: () => highlightDiffNonHtmlStep,
2114
+ highlightDiffStep: () => highlightDiffStep,
2115
+ joinSplittedText: () => joinSplittedText,
2116
+ prepare: () => prepare,
2117
+ replaceIbyJ: () => replaceIbyJ,
2118
+ resolveSpecialSyntax: () => resolveSpecialSyntax,
2119
+ restoreCaseStep: () => restoreCaseStep,
2120
+ restoreWhitespaces: () => restoreWhitespaces,
2121
+ storeSplittedAbcConvertedOrig: () => storeSplittedAbcConvertedOrig,
2122
+ storeSplittedText: () => storeSplittedText,
2123
+ taraskevize: () => taraskevize,
2124
+ trim: () => trim,
2125
+ whitespacesToSpaces: () => whitespacesToSpaces
2126
+ });
2127
+
2128
+ // src/lib/index.ts
2129
+ var lib_exports = {};
2130
+ __export(lib_exports, {
2131
+ afterTarask: () => afterTarask,
2132
+ ansiColorWrappers: () => ansiColorWrappers,
2133
+ dictFrom: () => dictFrom,
2134
+ highlightDiff: () => highlightDiff,
2135
+ htmlWrappers: () => htmlWrappers,
2136
+ replaceG: () => replaceG,
2137
+ replaceWithDict: () => replaceWithDict,
2138
+ restoreCase: () => restoreCase
2139
+ });
2140
+
2141
+ // src/lib/after-tarask.ts
2142
+ var iaReplacer = ($0, $1, $2) => {
2143
+ var _a;
2144
+ return ((_a = $2.match(/[аеёіоуыэюя]/g)) == null ? void 0 : _a.length) === 1 ? $1 + "я" + $2 : $0;
2145
+ };
2146
+ var afterTarask = [
2147
+ [/( б)е(зь? \S+)/g, iaReplacer],
2148
+ [/( н)е( \S+)/g, iaReplacer],
2149
+ [
2150
+ /( (?:б[ея]|пра|цера)?з) і(\S*)/g,
2151
+ ($0, $1, $2) => /([ая]ў|ну)$/.test($2) ? $1 + "ь і" + $2 : $0
2152
+ ]
2153
+ ];
2154
+
2155
+ // src/lib/replace-g.ts
2156
+ var replaceG = (replacer) => (text) => text.replace(
2018
2157
  /[Ґґ]/g,
2019
2158
  // @ts-ignore
2020
2159
  replacer
2021
2160
  );
2022
2161
 
2023
- // src/highlight-diff.ts
2024
- var wrappers = {
2025
- html: {
2026
- fix: (content) => `<tarF>${content}</tarF>`,
2027
- letterH: (content) => `<tarH>${content}</tarH>`
2028
- },
2029
- ansiColors: {
2030
- fix: (content) => `\x1B[32m${content}\x1B[0m`,
2031
- variable: (content) => `\x1B[35m${content}\x1B[0m`
2032
- }
2033
- };
2162
+ // src/lib/highlight-diff.ts
2034
2163
  var highlightDiff = (text, orig, isCyrillic, highlight) => {
2164
+ const replaceGByOpposite = replaceG(($0) => gobj[$0]);
2035
2165
  for (let i = 0; i < text.length; i++) {
2036
2166
  const word = text[i];
2037
2167
  const oWord = orig[i];
2038
2168
  if (oWord === word)
2039
2169
  continue;
2040
- const wordH = isCyrillic ? replaceG(word, ($0) => gobj[$0]) : word;
2170
+ const wordH = isCyrillic ? replaceGByOpposite(word) : word;
2041
2171
  if (oWord === wordH)
2042
2172
  continue;
2043
2173
  if (!/\(/.test(word)) {
@@ -2088,14 +2218,18 @@ var highlightDiff = (text, orig, isCyrillic, highlight) => {
2088
2218
  }
2089
2219
  };
2090
2220
 
2091
- // src/i-to-j.ts
2092
- var toJ = (shortU) => " + (shortU ? "у" : "");
2093
- var replaceIbyJ = (text, always = false) => text.replace(
2094
- /(?<=[аеёіоуыэюя] (ў?)/g,
2095
- always ? ($0, $1) => toJ($1) : ($0, $1) => Math.random() >= 0.5 ? toJ($1) : $0
2096
- );
2221
+ // src/lib/replace-with-dict.ts
2222
+ var replaceWithDict = (text, dict = []) => {
2223
+ for (const [pattern, result] of dict)
2224
+ text = text.replace(
2225
+ pattern,
2226
+ //@ts-ignore
2227
+ result
2228
+ );
2229
+ return text;
2230
+ };
2097
2231
 
2098
- // src/restore-case.ts
2232
+ // src/lib/restore-case.ts
2099
2233
  var isUpperCase = (str) => str === str.toUpperCase();
2100
2234
  var getLastLetter = (word, i) => {
2101
2235
  const result = new RegExp("\\p{L}(?=[^\\p{L}]*$)", "u").exec(word);
@@ -2131,71 +2265,73 @@ var restoreCase = (text, orig) => {
2131
2265
  return text;
2132
2266
  };
2133
2267
 
2134
- // src/after-tarask.ts
2135
- var iaReplacer = ($0, $1, $2) => {
2136
- var _a;
2137
- return ((_a = $2.match(/[аеёіоуыэюя]/g)) == null ? void 0 : _a.length) === 1 ? $1 + "я" + $2 : $0;
2138
- };
2139
- var afterTarask = [
2140
- [/( б)е(зь? \S+)/g, iaReplacer],
2141
- [/( н)е( \S+)/g, iaReplacer],
2142
- [
2143
- /( (?:б[ея]|пра|цера)?з) і(\S*)/g,
2144
- ($0, $1, $2) => /([ая]ў|ну)$/.test($2) ? $1 + "ь і" + $2 : $0
2145
- ]
2146
- ];
2147
-
2148
- // src/config-constants.ts
2149
- var ALPHABET = {
2150
- CYRILLIC: 0,
2151
- LATIN: 1,
2152
- ARABIC: 2,
2153
- LATIN_JI: 3
2154
- };
2155
- var REPLACE_J = {
2156
- NEVER: 0,
2157
- RANDOM: 1,
2158
- ALWAYS: 2
2268
+ // src/lib/wrappers.ts
2269
+ var htmlWrappers = {
2270
+ fix: (content) => `<tarF>${content}</tarF>`,
2271
+ letterH: (content) => `<tarH>${content}</tarH>`
2159
2272
  };
2160
- var VARIATION = {
2161
- NO: 0,
2162
- FIRST: 1,
2163
- ALL: 2
2273
+ var ansiColorWrappers = {
2274
+ fix: (content) => `\x1B[32m${content}\x1B[0m`,
2275
+ variable: (content) => `\x1B[35m${content}\x1B[0m`
2164
2276
  };
2165
2277
 
2166
- // src/letters.ts
2167
- var letters = {
2168
- [ALPHABET.LATIN]: latinLettersLowerCase,
2169
- [ALPHABET.ARABIC]: arabLetters,
2170
- [ALPHABET.LATIN_JI]: latinLettersLowerCaseJi
2171
- };
2172
- var lettersUpperCase = {
2173
- [ALPHABET.LATIN]: latinLettersUpperCase,
2174
- [ALPHABET.LATIN_JI]: latinLettersUpperCaseJi
2175
- };
2278
+ // src/steps/convert-alphabet.ts
2279
+ var convertAlphabet = (text, {
2280
+ cfg: {
2281
+ general: { abc }
2282
+ }
2283
+ }) => replaceWithDict(replaceWithDict(text, abc.lower), abc.upper);
2284
+ var convertAlphabetLowerCase = (text, {
2285
+ cfg: {
2286
+ general: { abc }
2287
+ }
2288
+ }) => replaceWithDict(text, abc.lower);
2176
2289
 
2177
- // src/tools.ts
2178
- var replaceWithDict = (text, dict = []) => {
2179
- for (const [pattern, result] of dict)
2180
- text = text.replace(
2181
- pattern,
2182
- //@ts-ignore
2183
- result
2184
- );
2185
- return text;
2290
+ // src/steps/highlight-diff.ts
2291
+ var highlightDiffStep = (highlight) => (_, {
2292
+ cfg: {
2293
+ general: { abc }
2294
+ },
2295
+ storage: { text, orig }
2296
+ }) => {
2297
+ highlightDiff(text, orig, abc === ALPHABET.CYRILLIC, highlight);
2298
+ return _;
2299
+ };
2300
+ var highlightDiffNonHtmlStep = (_, {
2301
+ cfg: {
2302
+ general: { abc },
2303
+ nonHtml: { ansiColors }
2304
+ },
2305
+ storage: { text, orig }
2306
+ }) => {
2307
+ if (ansiColors)
2308
+ highlightDiff(text, orig, abc === ALPHABET.CYRILLIC, ansiColorWrappers.fix);
2309
+ return _;
2186
2310
  };
2187
- var convertAlphabet = (text, abc) => replaceWithDict(replaceWithDict(text, letters[abc]), lettersUpperCase[abc]);
2188
2311
 
2189
- // src/resolve-syntax.ts
2312
+ // src/steps/resolve-syntax.ts
2190
2313
  var NOFIX_CHAR = "  ";
2191
2314
  var NOFIX_REGEX = new RegExp(NOFIX_CHAR, "g");
2192
- var applyNoFix = (arr, text) => arr.length ? text.replace(NOFIX_REGEX, () => arr.shift()) : text;
2193
- var applyVariableParts = (text, callback) => text.replace(/\([^)]*?\)/g, ($0) => callback($0.slice(1, -1).split("|")));
2194
- var resolveSpecialSyntax = (text, noFixArr, leftAngleBracket, convertAlphavet, doEscapeCaps) => {
2195
- const escapeCapsIfNeeded = (text2) => doEscapeCaps ? text2.replace(new RegExp("(?!<=\\p{Lu} )\\p{Lu}{2}[\\p{Lu} ]*(?!= \\p{Lu})", "gu"), ($0) => {
2196
- noFixArr.push(convertAlphavet($0));
2197
- return NOFIX_CHAR;
2198
- }) : text2;
2315
+ var applyNoFix = (text, { storage: { noFixArr } }) => noFixArr.length ? text.replace(NOFIX_REGEX, () => noFixArr.shift()) : text;
2316
+ var applyVariableParts = (callback) => (text) => text.replace(/\([^)]*?\)/g, ($0) => callback($0.slice(1, -1).split("|")));
2317
+ var resolveSpecialSyntax = (leftAngleBracket) => (text, {
2318
+ storage,
2319
+ cfg: {
2320
+ general: { doEscapeCapitalized, abc }
2321
+ }
2322
+ }) => {
2323
+ const noFixArr = storage.noFixArr = [];
2324
+ const convertAlphavet = (abcOnlyText, abc2) => restoreCase(
2325
+ replaceWithDict(abcOnlyText.toLowerCase(), abc2.lower).split(" "),
2326
+ abcOnlyText.split(" ")
2327
+ ).join(" ");
2328
+ const escapeCapsIfNeeded = (text2) => doEscapeCapitalized ? text2.replace(
2329
+ new RegExp("(?!<=\\p{Lu} )\\p{Lu}{2}[\\p{Lu} ]*(?!= \\p{Lu})", "gu"),
2330
+ ($0) => {
2331
+ noFixArr.push(convertAlphavet($0, abc));
2332
+ return NOFIX_CHAR;
2333
+ }
2334
+ ) : text2;
2199
2335
  const parts = text.split(/(?=[<>])/g);
2200
2336
  if (parts.length === 1)
2201
2337
  return escapeCapsIfNeeded(text);
@@ -2212,11 +2348,12 @@ var resolveSpecialSyntax = (text, noFixArr, leftAngleBracket, convertAlphavet, d
2212
2348
  currentPart += part;
2213
2349
  } else {
2214
2350
  let char = "";
2215
- const abc = currentPart[1] === "*";
2216
- if (abc) {
2351
+ const isAbc = currentPart[1] === "*";
2352
+ if (isAbc) {
2217
2353
  char = currentPart[2];
2218
2354
  currentPart = convertAlphavet(
2219
- currentPart.slice(char === "," || char === "." ? 3 : 2)
2355
+ currentPart.slice(char === "," || char === "." ? 3 : 2),
2356
+ abc
2220
2357
  );
2221
2358
  } else {
2222
2359
  char = currentPart[1];
@@ -2233,7 +2370,7 @@ var resolveSpecialSyntax = (text, noFixArr, leftAngleBracket, convertAlphavet, d
2233
2370
  break;
2234
2371
  default:
2235
2372
  toAddToResult = leftAngleBracket + NOFIX_CHAR;
2236
- noFixArr.push((abc ? "" : char) + currentPart + ">");
2373
+ noFixArr.push((isAbc ? "" : char) + currentPart + ">");
2237
2374
  }
2238
2375
  result += toAddToResult + escapeCapsIfNeeded(part.slice(1));
2239
2376
  currentPart = "";
@@ -2245,164 +2382,186 @@ var resolveSpecialSyntax = (text, noFixArr, leftAngleBracket, convertAlphavet, d
2245
2382
  return result + escapeCapsIfNeeded(currentPart);
2246
2383
  };
2247
2384
 
2248
- // src/tarask.ts
2249
- var afterJoin = (text) => text.replace(/&nbsp;/g, " ").replace(new RegExp(" (\\p{P}|\\p{S}|\\d+|&#40) ", "gu"), "$1");
2250
- var finalize = (text, newLine) => text.replace(/\n/g, newLine).trim();
2251
- var restoreParentheses = (text) => text.replace(/&#40/g, "(");
2252
- var wordlistPlusNoSoften = wordlist.concat(noSoften);
2253
- var Taraskevizer = class {
2254
- general = {
2255
- abc: ALPHABET.CYRILLIC,
2256
- j: REPLACE_J.NEVER,
2257
- doEscapeCapitalized: true
2258
- };
2259
- html = {
2260
- g: false
2261
- };
2262
- nonHtml = {
2263
- h: false,
2264
- ansiColors: false,
2265
- variations: VARIATION.ALL
2266
- };
2267
- spaces = [];
2268
- restoreSpaces(text) {
2269
- return text.replace(/ /g, () => this.spaces.shift());
2270
- }
2271
- constructor(options) {
2272
- if (!options)
2273
- return;
2274
- Object.assign(this.general, options.general);
2275
- Object.assign(this.html, options.html);
2276
- Object.assign(this.nonHtml, options.nonHtml);
2277
- if (options.taraskevize)
2278
- this.taraskevize = options.taraskevize;
2279
- }
2280
- convert(text) {
2281
- const wrapInColorOf = wrappers.ansiColors;
2282
- const isCyrillic = this.general.abc === ALPHABET.CYRILLIC;
2283
- const noFixArr = [];
2284
- const { splitted, splittedOrig } = this.process(
2285
- this.prepare(text, noFixArr, "<")
2286
- );
2287
- if (this.nonHtml.ansiColors)
2288
- highlightDiff(splitted, splittedOrig, isCyrillic, wrapInColorOf.fix);
2289
- text = afterJoin(this.restoreSpaces(splitted.join(" ")));
2290
- if (isCyrillic && (this.nonHtml.h || this.nonHtml.ansiColors))
2291
- text = replaceG(
2292
- text,
2293
- this.nonHtml.ansiColors ? this.nonHtml.h ? ($0) => wrapInColorOf.variable(gobj[$0]) : wrapInColorOf.variable("$&") : ($0) => gobj[$0]
2294
- );
2295
- if (this.nonHtml.variations !== VARIATION.ALL) {
2296
- const partIndex = this.nonHtml.variations;
2297
- text = applyVariableParts(
2298
- text,
2299
- this.nonHtml.ansiColors ? (parts) => wrapInColorOf.variable(parts[partIndex]) : (parts) => parts[partIndex]
2300
- );
2301
- }
2302
- return finalize(restoreParentheses(applyNoFix(noFixArr, text)), "\n");
2303
- }
2304
- convertToHtml(text) {
2305
- const wrapInTag = wrappers.html;
2306
- const isCyrillic = this.general.abc === ALPHABET.CYRILLIC;
2307
- const noFixArr = [];
2308
- const { splitted, splittedOrig } = this.process(
2309
- this.prepare(text, noFixArr, "&lt;")
2310
- );
2311
- highlightDiff(splitted, splittedOrig, isCyrillic, wrapInTag.fix);
2312
- text = afterJoin(this.restoreSpaces(splitted.join(" ")));
2313
- if (isCyrillic)
2314
- text = replaceG(
2315
- text,
2316
- this.html.g ? wrapInTag.letterH("$&") : ($0) => wrapInTag.letterH(gobj[$0])
2317
- );
2318
- return finalize(
2319
- applyVariableParts(applyNoFix(noFixArr, text), (parts) => {
2320
- const main = parts.shift();
2321
- return `<tarL data-l='${parts}'>${main}</tarL>`;
2322
- }),
2323
- "<br>"
2324
- );
2325
- }
2326
- prepare(text, noFixArr, LEFT_ANGLE_BRACKET, doEscapeCapitalized = this.general.doEscapeCapitalized) {
2327
- text = resolveSpecialSyntax(
2328
- ` ${text.trim()} `.replace(//g, ""),
2329
- noFixArr,
2330
- LEFT_ANGLE_BRACKET,
2331
- (abcOnlyText) => restoreCase(
2332
- replaceWithDict(
2333
- abcOnlyText.toLowerCase(),
2334
- letters[this.general.abc]
2335
- ).split(" "),
2336
- abcOnlyText.split(" ")
2337
- ).join(" "),
2338
- doEscapeCapitalized
2339
- ).replace(/г'(?![еёіюя])/g, "ґ").replace(/ - /g, " — ").replace(new RegExp("(\\p{P}|\\p{S}|\\d+)", "gu"), " $1 ").replace(/ ['`’] (?=\S)/g, "ʼ").replace(/\(/g, "&#40");
2340
- text = text.replace(/\s+/g, (match) => {
2341
- this.spaces.push(match);
2342
- return " ";
2343
- });
2344
- return text;
2385
+ // src/steps/html-steps.ts
2386
+ var applyHtmlVariations = applyVariableParts((parts) => {
2387
+ const main = parts.shift();
2388
+ return `<tarL data-l='${parts}'>${main}</tarL>`;
2389
+ });
2390
+ var applyHtmlG = (text, {
2391
+ cfg: {
2392
+ general: { abc },
2393
+ html: { g }
2345
2394
  }
2346
- convertAlphabetOnly(text) {
2347
- const noFixArr = [];
2348
- return finalize(
2349
- afterJoin(
2350
- restoreParentheses(
2351
- applyNoFix(
2352
- noFixArr,
2353
- this.restoreSpaces(
2354
- convertAlphabet(
2355
- this.prepare(text, noFixArr, "<", false),
2356
- this.general.abc
2357
- )
2358
- )
2359
- )
2360
- )
2361
- ),
2362
- "\n"
2363
- );
2395
+ }) => {
2396
+ const colorize = htmlWrappers.letterH;
2397
+ return abc === ALPHABET.CYRILLIC ? replaceG(g ? colorize("$&") : ($0) => colorize(gobj[$0]))(text) : text;
2398
+ };
2399
+
2400
+ // src/steps/i-to-j.ts
2401
+ var toJ = (shortU) => "й " + (shortU ? "у" : "");
2402
+ var replaceIbyJ = (text, {
2403
+ cfg: {
2404
+ general: { j, abc }
2364
2405
  }
2365
- process(text) {
2366
- const { abc, j } = this.general;
2367
- const splittedOrig = convertAlphabet(text, abc).split(" ");
2368
- text = this.taraskevize(text.toLowerCase());
2369
- if (j && abc !== ALPHABET.LATIN_JI)
2370
- text = replaceIbyJ(text, j === REPLACE_J.ALWAYS);
2371
- text = replaceWithDict(text, letters[abc]);
2372
- let splitted = text.split(" ");
2373
- if (abc !== ALPHABET.ARABIC)
2374
- splitted = restoreCase(splitted, splittedOrig);
2375
- return { splittedOrig, splitted };
2406
+ }) => j && abc !== ALPHABET.LATIN_JI ? text.replace(
2407
+ /(?<=[аеёіоуыэюя] (ў?)/g,
2408
+ j === REPLACE_J.ALWAYS ? ($0, $1) => toJ($1) : ($0, $1) => Math.random() >= 0.5 ? toJ($1) : $0
2409
+ ) : text;
2410
+
2411
+ // src/steps/join-splitted.ts
2412
+ var joinSplittedText = (_, { storage: { text } }) => text.join(" ");
2413
+
2414
+ // src/steps/non-html-steps.ts
2415
+ var applyNonHtmlVariations = (text, options) => {
2416
+ const partIndex = options.cfg.nonHtml.variations;
2417
+ const colorize = ansiColorWrappers.variable;
2418
+ return partIndex === VARIATION.ALL ? text : applyVariableParts(
2419
+ options.cfg.nonHtml.ansiColors ? (parts) => colorize(parts[partIndex]) : (parts) => parts[partIndex]
2420
+ )(text, options);
2421
+ };
2422
+ var applyNonHtmlG = (text, {
2423
+ cfg: {
2424
+ general: { abc },
2425
+ nonHtml: { h, ansiColors }
2376
2426
  }
2377
- taraskevize(text) {
2378
- text = replaceWithDict(text, wordlistPlusNoSoften);
2379
- softening:
2380
- do {
2381
- text = replaceWithDict(text, softeners);
2382
- for (const [pattern, result] of softeners)
2383
- if (result !== "$1дзьдз" && pattern.test(text))
2384
- continue softening;
2385
- break;
2386
- } while (true);
2387
- return replaceWithDict(text.replace(//g, ""), afterTarask);
2427
+ }) => {
2428
+ const colorize = ansiColorWrappers.variable;
2429
+ return abc === ALPHABET.CYRILLIC && (h || ansiColors) ? replaceG(
2430
+ ansiColors ? h ? ($0) => colorize(gobj[$0]) : colorize("$&") : ($0) => gobj[$0]
2431
+ )(text) : text;
2432
+ };
2433
+
2434
+ // src/steps/prepare.ts
2435
+ var prepare = (text) => text.replace(/г'(?![еёіюя])/g, "ґ").replace(/ - /g, " — ").replace(new RegExp("(\\p{P}|\\p{S}|\\d+)", "gu"), " $1 ").replace(/ ['`’] (?=\S)/g, "ʼ").replace(/\(/g, "&#40");
2436
+
2437
+ // src/steps/restore-case.ts
2438
+ var restoreCaseStep = (_, {
2439
+ cfg: {
2440
+ general: { abc }
2441
+ },
2442
+ storage
2443
+ }) => {
2444
+ if (abc !== ALPHABET.ARABIC) {
2445
+ storage.text = restoreCase(storage.text, storage.orig);
2388
2446
  }
2447
+ return _;
2389
2448
  };
2390
2449
 
2391
- // src/for-plugins.ts
2392
- var for_plugins_exports = {};
2393
- __export(for_plugins_exports, {
2394
- afterTarask: () => afterTarask,
2395
- noSoften: () => noSoften,
2396
- replaceWithDict: () => replaceWithDict,
2397
- softeners: () => softeners,
2398
- wordlist: () => wordlist
2399
- });
2450
+ // src/steps/store-splitted-abc-converted-orig.ts
2451
+ var storeSplittedAbcConvertedOrig = (text, options) => {
2452
+ options.storage.orig = convertAlphabet(text, options).split(" ");
2453
+ return text;
2454
+ };
2455
+
2456
+ // src/steps/store-splitted-text.ts
2457
+ var storeSplittedText = (text, { storage }) => {
2458
+ storage.text = text.split(" ");
2459
+ return text;
2460
+ };
2461
+
2462
+ // src/steps/taraskevize.ts
2463
+ var wordlistPlusNoSoften = wordlist.concat(noSoften);
2464
+ var taraskevize = (text) => {
2465
+ text = replaceWithDict(text, wordlistPlusNoSoften);
2466
+ softening:
2467
+ do {
2468
+ text = replaceWithDict(text, softeners);
2469
+ for (const [pattern, result] of softeners)
2470
+ if (result !== "$1дзьдз" && pattern.test(text))
2471
+ continue softening;
2472
+ break;
2473
+ } while (true);
2474
+ return replaceWithDict(text.replace(//g, ""), afterTarask);
2475
+ };
2476
+
2477
+ // src/steps/whitespaces.ts
2478
+ var whitespacesToSpaces = (text, { storage }) => {
2479
+ storage.spaces = [];
2480
+ return text.replace(/\s+/g, (match) => {
2481
+ storage.spaces.push(match);
2482
+ return " ";
2483
+ });
2484
+ };
2485
+ var restoreWhitespaces = (text, { storage }) => text.replace(/ /g, () => storage.spaces.shift());
2486
+
2487
+ // src/steps/trim.ts
2488
+ var trim = (text) => ` ${text.trim()} `;
2489
+
2490
+ // src/pipelines.ts
2491
+ var restoreParentheses = (text) => text.replace(/&#40/g, "(");
2492
+ var afterJoin = (text) => text.replace(/&nbsp;/g, " ").replace(new RegExp(" (\\p{P}|\\p{S}|\\d+|&#40) ", "gu"), "$1");
2493
+ var finalize = (newLine) => (text) => text.replace(/\n/g, newLine).trim();
2494
+ var resolveSpecialSyntaxWithLAB = resolveSpecialSyntax("<");
2495
+ var toLowerCase = (text) => text.toLowerCase();
2496
+ var finalizeWithNewLine = finalize("\n");
2497
+ var abcOnlyPipeline = [
2498
+ (_, { storage, cfg: { general } }) => {
2499
+ storage.doEscapeCapitalized = general.doEscapeCapitalized;
2500
+ general.doEscapeCapitalized = false;
2501
+ return _;
2502
+ },
2503
+ trim,
2504
+ resolveSpecialSyntaxWithLAB,
2505
+ prepare,
2506
+ whitespacesToSpaces,
2507
+ convertAlphabet,
2508
+ restoreWhitespaces,
2509
+ applyNoFix,
2510
+ restoreParentheses,
2511
+ afterJoin,
2512
+ finalizeWithNewLine,
2513
+ (_, { storage, cfg: { general } }) => {
2514
+ general.doEscapeCapitalized = storage.doEscapeCapitalized;
2515
+ return _;
2516
+ }
2517
+ ];
2518
+ var createPipeline = (resolveSpecialSyntax2, applyG, applyVariations, finalize2, highlightDiffStep2) => [
2519
+ trim,
2520
+ resolveSpecialSyntax2,
2521
+ prepare,
2522
+ whitespacesToSpaces,
2523
+ storeSplittedAbcConvertedOrig,
2524
+ toLowerCase,
2525
+ taraskevize,
2526
+ replaceIbyJ,
2527
+ convertAlphabetLowerCase,
2528
+ storeSplittedText,
2529
+ restoreCaseStep,
2530
+ highlightDiffStep2,
2531
+ joinSplittedText,
2532
+ restoreWhitespaces,
2533
+ restoreParentheses,
2534
+ afterJoin,
2535
+ applyG,
2536
+ applyVariations,
2537
+ applyNoFix,
2538
+ finalize2
2539
+ ];
2540
+ var plainTextPipeline = createPipeline(
2541
+ resolveSpecialSyntaxWithLAB,
2542
+ applyNonHtmlG,
2543
+ applyNonHtmlVariations,
2544
+ finalizeWithNewLine,
2545
+ highlightDiffNonHtmlStep
2546
+ );
2547
+ var htmlPipeline = createPipeline(
2548
+ resolveSpecialSyntax("&lt;"),
2549
+ applyHtmlG,
2550
+ applyHtmlVariations,
2551
+ finalize("<br>"),
2552
+ highlightDiffStep(htmlWrappers.fix)
2553
+ );
2400
2554
  // Annotate the CommonJS export names for ESM import in node:
2401
2555
  0 && (module.exports = {
2402
2556
  ALPHABET,
2403
2557
  REPLACE_J,
2404
- Taraskevizer,
2558
+ TaraskConfig,
2405
2559
  VARIATION,
2406
- __TARASK__,
2407
- gobj
2560
+ abcOnlyPipeline,
2561
+ dicts,
2562
+ htmlPipeline,
2563
+ lib,
2564
+ pipelineSteps,
2565
+ plainTextPipeline,
2566
+ tarask
2408
2567
  });