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/README.md +25 -32
- package/dist/bin.js +18 -10
- package/dist/index.cjs +393 -234
- package/dist/index.d.ts +182 -32
- package/dist/index.js +385 -231
- package/package.json +1 -1
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
|
-
|
|
25
|
+
TaraskConfig: () => TaraskConfig,
|
|
26
26
|
VARIATION: () => VARIATION,
|
|
27
|
-
|
|
28
|
-
|
|
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/
|
|
2017
|
-
var
|
|
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 ?
|
|
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/
|
|
2092
|
-
var
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
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/
|
|
2135
|
-
var
|
|
2136
|
-
|
|
2137
|
-
|
|
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
|
|
2161
|
-
|
|
2162
|
-
|
|
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/
|
|
2167
|
-
var
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
};
|
|
2172
|
-
var
|
|
2173
|
-
|
|
2174
|
-
|
|
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/
|
|
2178
|
-
var
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
return
|
|
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 = (
|
|
2193
|
-
var applyVariableParts = (
|
|
2194
|
-
var resolveSpecialSyntax = (
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
}
|
|
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
|
|
2216
|
-
if (
|
|
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((
|
|
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/
|
|
2249
|
-
var
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
var
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
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, "<")
|
|
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, "(");
|
|
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
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
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
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
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
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
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, "(");
|
|
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/
|
|
2392
|
-
var
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
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(/(/g, "(");
|
|
2492
|
+
var afterJoin = (text) => text.replace(/ /g, " ").replace(new RegExp(" (\\p{P}|\\p{S}|\\d+|() ", "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("<"),
|
|
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
|
-
|
|
2558
|
+
TaraskConfig,
|
|
2405
2559
|
VARIATION,
|
|
2406
|
-
|
|
2407
|
-
|
|
2560
|
+
abcOnlyPipeline,
|
|
2561
|
+
dicts,
|
|
2562
|
+
htmlPipeline,
|
|
2563
|
+
lib,
|
|
2564
|
+
pipelineSteps,
|
|
2565
|
+
plainTextPipeline,
|
|
2566
|
+
tarask
|
|
2408
2567
|
});
|