@watermarkinsights/ripple 3.6.0 → 3.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 +3 -3
- package/dist/cjs/{functions-068b9a56.js → functions-f0693632.js} +708 -442
- package/dist/cjs/{global-51e309da.js → global-86d92ce3.js} +65 -65
- package/dist/cjs/{http-service-9e8c4dd5.js → http-service-494d81de.js} +49 -49
- package/dist/cjs/{interfaces-30a74c1f.js → interfaces-a3338581.js} +29 -29
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/priv-chart-popover.cjs.entry.js +78 -78
- package/dist/cjs/priv-datepicker.cjs.entry.js +667 -667
- package/dist/cjs/priv-navigator-button.cjs.entry.js +18 -18
- package/dist/cjs/priv-navigator-item.cjs.entry.js +23 -23
- package/dist/cjs/ripple.cjs.js +1 -1
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +341 -341
- package/dist/cjs/wm-button.cjs.entry.js +237 -219
- package/dist/cjs/wm-chart-slice.cjs.entry.js +13 -13
- package/dist/cjs/wm-chart.cjs.entry.js +474 -474
- package/dist/cjs/wm-datepicker.cjs.entry.js +262 -256
- package/dist/cjs/wm-input.cjs.entry.js +134 -134
- package/dist/cjs/wm-modal-footer.cjs.entry.js +31 -31
- package/dist/cjs/wm-modal-header.cjs.entry.js +34 -34
- package/dist/cjs/wm-modal.cjs.entry.js +161 -161
- package/dist/cjs/wm-navigator.cjs.entry.js +268 -268
- package/dist/cjs/wm-network-uploader.cjs.entry.js +421 -421
- package/dist/cjs/wm-option_2.cjs.entry.js +494 -494
- package/dist/cjs/wm-pagination.cjs.entry.js +167 -167
- package/dist/cjs/wm-search.cjs.entry.js +231 -231
- package/dist/cjs/wm-snackbar.cjs.entry.js +170 -170
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +296 -300
- package/dist/cjs/wm-tag-input.cjs.entry.js +570 -570
- package/dist/cjs/wm-timepicker.cjs.entry.js +380 -380
- package/dist/cjs/wm-toggletip.cjs.entry.js +124 -124
- package/dist/cjs/wm-uploader.cjs.entry.js +347 -347
- package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
- package/dist/collection/components/wm-action-menu/wm-action-menu.js +460 -460
- package/dist/collection/components/wm-button/wm-button.css +37 -4
- package/dist/collection/components/wm-button/wm-button.js +503 -485
- package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.js +232 -232
- package/dist/collection/components/wm-chart/wm-chart-slice.js +64 -64
- package/dist/collection/components/wm-chart/wm-chart.js +719 -719
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +1015 -1015
- package/dist/collection/components/wm-datepicker/wm-datepicker.js +468 -462
- package/dist/collection/components/wm-input/wm-input.js +424 -424
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +444 -444
- package/dist/collection/components/wm-modal/wm-modal-footer.js +141 -141
- package/dist/collection/components/wm-modal/wm-modal-header.js +92 -92
- package/dist/collection/components/wm-modal/wm-modal.js +459 -459
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +97 -97
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +114 -114
- package/dist/collection/components/wm-navigator/wm-navigator.js +468 -468
- package/dist/collection/components/wm-option/wm-option.js +422 -422
- package/dist/collection/components/wm-pagination/wm-pagination.js +368 -368
- package/dist/collection/components/wm-search/wm-search.js +479 -479
- package/dist/collection/components/wm-select/wm-select.js +720 -720
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +297 -297
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +216 -219
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +330 -331
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -104
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +801 -801
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +580 -580
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +241 -241
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.css +37 -4
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +753 -753
- package/dist/collection/components/wm-uploader/wm-uploader.css +37 -4
- package/dist/collection/components/wm-uploader/wm-uploader.js +748 -748
- package/dist/collection/components/wm-wrapper/wm-wrapper.js +27 -27
- package/dist/collection/dev/scripts.js +20 -20
- package/dist/collection/global/__mocks__/functions.js +6 -6
- package/dist/collection/global/functions.js +445 -445
- package/dist/collection/global/global.js +72 -72
- package/dist/collection/global/interfaces.js +49 -49
- package/dist/collection/global/services/__mocks__/http-service.js +130 -130
- package/dist/collection/global/services/http-service.js +50 -50
- package/dist/collection/lang/lang.js +5 -5
- package/dist/collection/lang/missing.js +39 -39
- package/dist/collection/lang/piglatin.js +93 -93
- package/dist/esm/{functions-122ab496.js → functions-cbfc81d1.js} +708 -442
- package/dist/esm/{global-c36ac692.js → global-d2addbde.js} +65 -65
- package/dist/esm/{http-service-5d037e16.js → http-service-3dc3b3e7.js} +49 -49
- package/dist/esm/{interfaces-61c6305b.js → interfaces-2b97fab2.js} +29 -29
- package/dist/esm/loader.js +1 -1
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/priv-chart-popover.entry.js +78 -78
- package/dist/esm/priv-datepicker.entry.js +667 -667
- package/dist/esm/priv-navigator-button.entry.js +18 -18
- package/dist/esm/priv-navigator-item.entry.js +23 -23
- package/dist/esm/ripple.js +1 -1
- package/dist/esm/wm-action-menu_2.entry.js +341 -341
- package/dist/esm/wm-button.entry.js +237 -219
- package/dist/esm/wm-chart-slice.entry.js +13 -13
- package/dist/esm/wm-chart.entry.js +474 -474
- package/dist/esm/wm-datepicker.entry.js +262 -256
- package/dist/esm/wm-input.entry.js +134 -134
- package/dist/esm/wm-modal-footer.entry.js +31 -31
- package/dist/esm/wm-modal-header.entry.js +34 -34
- package/dist/esm/wm-modal.entry.js +161 -161
- package/dist/esm/wm-navigator.entry.js +268 -268
- package/dist/esm/wm-network-uploader.entry.js +421 -421
- package/dist/esm/wm-option_2.entry.js +494 -494
- package/dist/esm/wm-pagination.entry.js +167 -167
- package/dist/esm/wm-search.entry.js +231 -231
- package/dist/esm/wm-snackbar.entry.js +170 -170
- package/dist/esm/wm-tab-item_3.entry.js +296 -300
- package/dist/esm/wm-tag-input.entry.js +570 -570
- package/dist/esm/wm-timepicker.entry.js +380 -380
- package/dist/esm/wm-toggletip.entry.js +124 -124
- package/dist/esm/wm-uploader.entry.js +347 -347
- package/dist/esm/wm-wrapper.entry.js +12 -12
- package/dist/ripple/{p-9a8fbfad.entry.js → p-0c488d9d.entry.js} +1 -1
- package/dist/ripple/{p-54c39a0b.entry.js → p-111f705a.entry.js} +1 -1
- package/dist/ripple/{p-e36853fd.entry.js → p-266e4bc2.entry.js} +1 -1
- package/dist/ripple/p-2caeca6b.entry.js +1 -0
- package/dist/ripple/{p-ecbb441f.entry.js → p-30f13477.entry.js} +1 -1
- package/dist/ripple/{p-888bec42.js → p-43f1298b.js} +0 -0
- package/dist/ripple/p-4414cb64.entry.js +1 -0
- package/dist/ripple/p-5585f23e.entry.js +1 -0
- package/dist/ripple/p-7d9c18b9.entry.js +1 -0
- package/dist/ripple/{p-a61b07de.entry.js → p-8a4bac13.entry.js} +1 -1
- package/dist/ripple/{p-4b72f4eb.entry.js → p-938a5ba4.entry.js} +1 -1
- package/dist/ripple/{p-2b3f75eb.entry.js → p-9d6e4c64.entry.js} +1 -1
- package/dist/ripple/{p-97884327.entry.js → p-ad73d523.entry.js} +1 -1
- package/dist/ripple/{p-08e67884.js → p-b5edcf38.js} +2 -2
- package/dist/ripple/{p-067909ce.entry.js → p-b9656d44.entry.js} +1 -1
- package/dist/ripple/{p-2aa79663.entry.js → p-bd05632b.entry.js} +1 -1
- package/dist/ripple/{p-f6bed262.entry.js → p-c0b0510a.entry.js} +1 -1
- package/dist/ripple/{p-1c23f228.entry.js → p-cd466a5b.entry.js} +1 -1
- package/dist/ripple/p-d9c7e3d6.js +1 -0
- package/dist/ripple/p-da1435f1.entry.js +1 -0
- package/dist/ripple/p-e3765b8e.entry.js +1 -0
- package/dist/ripple/{p-a2b02aec.entry.js → p-f33f3f20.entry.js} +1 -1
- package/dist/ripple/{p-803b19aa.entry.js → p-f3569e91.entry.js} +1 -1
- package/dist/ripple/{p-a6d6eae7.js → p-fd8070fb.js} +0 -0
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +48 -48
- package/dist/types/components/wm-button/wm-button.d.ts +44 -44
- package/dist/types/components/wm-chart/priv-chart-popover/priv-chart-popover.d.ts +23 -23
- package/dist/types/components/wm-chart/wm-chart-slice.d.ts +8 -8
- package/dist/types/components/wm-chart/wm-chart.d.ts +82 -82
- package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +76 -76
- package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +41 -41
- package/dist/types/components/wm-input/wm-input.d.ts +46 -46
- package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +34 -34
- package/dist/types/components/wm-modal/wm-modal-footer.d.ts +15 -15
- package/dist/types/components/wm-modal/wm-modal-header.d.ts +12 -12
- package/dist/types/components/wm-modal/wm-modal.d.ts +41 -41
- package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +10 -10
- package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +13 -13
- package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -61
- package/dist/types/components/wm-option/wm-option.d.ts +32 -32
- package/dist/types/components/wm-pagination/wm-pagination.d.ts +32 -32
- package/dist/types/components/wm-search/wm-search.d.ts +86 -86
- package/dist/types/components/wm-select/wm-select.d.ts +66 -66
- package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +35 -35
- package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +38 -38
- package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +53 -53
- package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -20
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +92 -92
- package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +61 -61
- package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +27 -27
- package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -85
- package/dist/types/components/wm-uploader/wm-uploader.d.ts +80 -80
- package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -7
- package/dist/types/components.d.ts +24 -24
- package/dist/types/global/__mocks__/functions.d.ts +6 -6
- package/dist/types/global/functions.d.ts +40 -40
- package/dist/types/global/global.d.ts +1 -1
- package/dist/types/global/interfaces.d.ts +34 -34
- package/dist/types/global/services/__mocks__/http-service.d.ts +6 -6
- package/dist/types/global/services/http-service.d.ts +4 -4
- package/dist/types/lang/lang.d.ts +5 -5
- package/package.json +47 -47
- package/dist/ripple/p-3ff67fd5.entry.js +0 -1
- package/dist/ripple/p-4629470d.entry.js +0 -1
- package/dist/ripple/p-4b1f14bb.entry.js +0 -1
- package/dist/ripple/p-7da00f33.entry.js +0 -1
- package/dist/ripple/p-888c18c3.entry.js +0 -1
- package/dist/ripple/p-8c93b893.js +0 -1
- package/dist/ripple/p-f95c2283.entry.js +0 -1
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
/* This script is useful when we translate internally, so we know which keys to translate.
|
|
2
|
-
* Currently Martin Maugeais translates to French and Kristian Manrique to Spanish.
|
|
3
|
-
* This script should be run with `npm run missing`. It may fail otherwise, as fs paths are relative to project root.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const fs = require("fs");
|
|
7
|
-
const en = require("./en.json");
|
|
8
|
-
const fr = require("./fr.json");
|
|
9
|
-
const es = require("./es.json");
|
|
10
|
-
|
|
11
|
-
const keys = Object.keys(en);
|
|
12
|
-
|
|
13
|
-
let missingFR = {};
|
|
14
|
-
let missingES = {};
|
|
15
|
-
|
|
16
|
-
keys.map((key) => {
|
|
17
|
-
if (!fr[key]) {
|
|
18
|
-
missingFR[key] = en[key];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (!es[key]) {
|
|
22
|
-
missingES[key] = en[key];
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
const dataFR = JSON.stringify(missingFR, null, 2);
|
|
27
|
-
const dataES = JSON.stringify(missingES, null, 2);
|
|
28
|
-
|
|
29
|
-
if (Object.entries(missingFR).length > 0) {
|
|
30
|
-
fs.writeFile("src/lang/missingTranslationsFR.json", dataFR, (err) => {
|
|
31
|
-
!!err && console.log(err);
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (Object.entries(missingES).length > 0) {
|
|
36
|
-
fs.writeFile("missingTranslationsES.json", dataES, (err) => {
|
|
37
|
-
!!err && console.log(err);
|
|
38
|
-
});
|
|
39
|
-
}
|
|
1
|
+
/* This script is useful when we translate internally, so we know which keys to translate.
|
|
2
|
+
* Currently Martin Maugeais translates to French and Kristian Manrique to Spanish.
|
|
3
|
+
* This script should be run with `npm run missing`. It may fail otherwise, as fs paths are relative to project root.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const en = require("./en.json");
|
|
8
|
+
const fr = require("./fr.json");
|
|
9
|
+
const es = require("./es.json");
|
|
10
|
+
|
|
11
|
+
const keys = Object.keys(en);
|
|
12
|
+
|
|
13
|
+
let missingFR = {};
|
|
14
|
+
let missingES = {};
|
|
15
|
+
|
|
16
|
+
keys.map((key) => {
|
|
17
|
+
if (!fr[key]) {
|
|
18
|
+
missingFR[key] = en[key];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!es[key]) {
|
|
22
|
+
missingES[key] = en[key];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const dataFR = JSON.stringify(missingFR, null, 2);
|
|
27
|
+
const dataES = JSON.stringify(missingES, null, 2);
|
|
28
|
+
|
|
29
|
+
if (Object.entries(missingFR).length > 0) {
|
|
30
|
+
fs.writeFile("src/lang/missingTranslationsFR.json", dataFR, (err) => {
|
|
31
|
+
!!err && console.log(err);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (Object.entries(missingES).length > 0) {
|
|
36
|
+
fs.writeFile("missingTranslationsES.json", dataES, (err) => {
|
|
37
|
+
!!err && console.log(err);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
const fs = require("fs");
|
|
2
|
-
const en = require("./en.json");
|
|
3
|
-
|
|
4
|
-
const pig = {};
|
|
5
|
-
Object.keys(en).map((k) => {
|
|
6
|
-
let string = en[k].defaultMessage;
|
|
7
|
-
const interpStart = string.indexOf("{");
|
|
8
|
-
const interpEnd = string.lastIndexOf("}") + 1;
|
|
9
|
-
|
|
10
|
-
// if there is an interpolation pattern
|
|
11
|
-
if (interpStart >= 0 && interpEnd > 2) {
|
|
12
|
-
let translInterp = translateSentence(string.slice(0, interpStart));
|
|
13
|
-
|
|
14
|
-
const interp = string.slice(interpStart, interpEnd);
|
|
15
|
-
// what's inside the braces shouldn't be translated
|
|
16
|
-
// unless it's in nested translated, and so on
|
|
17
|
-
// we can set flags to cut the string into pieces
|
|
18
|
-
// which should or should not be translated
|
|
19
|
-
const flags = [];
|
|
20
|
-
for (x = 0; x < interp.length; x++) {
|
|
21
|
-
if (interp[x] == "{") {
|
|
22
|
-
flags.push(x);
|
|
23
|
-
} else if (interp[x] == "}") {
|
|
24
|
-
flags.push(x);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
splits = flags.map((_, i) => {
|
|
29
|
-
if (i < flags.length) return interp.slice(flags[i], flags[i + 1]);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
splits.map((split, i) => {
|
|
33
|
-
translInterp += i % 2 ? translateSentence(split) : split; // only translate even ones (the odd ones are params)
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
translInterp += translateSentence(string.slice(interpEnd, string.length));
|
|
37
|
-
|
|
38
|
-
const dm = { defaultMessage: translInterp };
|
|
39
|
-
pig[k] = dm;
|
|
40
|
-
} else {
|
|
41
|
-
const dm = { defaultMessage: translateSentence(string) };
|
|
42
|
-
pig[k] = dm;
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
data = JSON.stringify(pig, null, 2);
|
|
46
|
-
|
|
47
|
-
fs.writeFile("src/lang/pig.json", data, (err) => {
|
|
48
|
-
!!err && console.log(err);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
function pigLatinize(word) {
|
|
52
|
-
const isVowel = (char) => ["a", "e", "i", "o", "u"].includes(char.toLowerCase());
|
|
53
|
-
const isLetter = (char) => RegExp(/^\p{L}/, "u").test(char);
|
|
54
|
-
|
|
55
|
-
const firstLetter = Array.from(word).reduce((l, char, i) => (isLetter(char) && l < 0 ? i : l), -1);
|
|
56
|
-
|
|
57
|
-
const lastLetter = Array.from(word).reduce((l, char, i) => (isLetter(char) ? i : l), -1);
|
|
58
|
-
|
|
59
|
-
if (firstLetter == -1 && lastLetter == -1) return word; // only special chars, don't translate
|
|
60
|
-
|
|
61
|
-
const specialKBefore = word.slice(0, firstLetter) || "";
|
|
62
|
-
const specialKAfter = word.slice(lastLetter + 1, word.length + 1) || "";
|
|
63
|
-
word = word.slice(firstLetter, lastLetter + 1) || "";
|
|
64
|
-
|
|
65
|
-
if (word) {
|
|
66
|
-
if (isVowel(word[0])) {
|
|
67
|
-
word += "yay";
|
|
68
|
-
} else {
|
|
69
|
-
const firstVowel = Array.from(word).reduce((firstV, char, i) => {
|
|
70
|
-
return isVowel(char) && firstV < 0 ? i : firstV;
|
|
71
|
-
}, -1);
|
|
72
|
-
if (word[0] == word[0].toUpperCase()) {
|
|
73
|
-
word =
|
|
74
|
-
word.substring(firstVowel, firstVowel + 1).toUpperCase() +
|
|
75
|
-
word.substring(firstVowel + 1, word.length) +
|
|
76
|
-
word.substring(0, firstVowel).toLowerCase() +
|
|
77
|
-
"ay";
|
|
78
|
-
} else {
|
|
79
|
-
word = word.substring(firstVowel, word.length) + word.substring(0, firstVowel) + "ay";
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return specialKBefore + word + specialKAfter;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function translateSentence(string) {
|
|
87
|
-
let words = string.split(" ");
|
|
88
|
-
return words
|
|
89
|
-
.reduce((acc, word) => {
|
|
90
|
-
return acc + " " + pigLatinize(word);
|
|
91
|
-
}, "")
|
|
92
|
-
.substring(1); // rm leading space
|
|
93
|
-
}
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const en = require("./en.json");
|
|
3
|
+
|
|
4
|
+
const pig = {};
|
|
5
|
+
Object.keys(en).map((k) => {
|
|
6
|
+
let string = en[k].defaultMessage;
|
|
7
|
+
const interpStart = string.indexOf("{");
|
|
8
|
+
const interpEnd = string.lastIndexOf("}") + 1;
|
|
9
|
+
|
|
10
|
+
// if there is an interpolation pattern
|
|
11
|
+
if (interpStart >= 0 && interpEnd > 2) {
|
|
12
|
+
let translInterp = translateSentence(string.slice(0, interpStart));
|
|
13
|
+
|
|
14
|
+
const interp = string.slice(interpStart, interpEnd);
|
|
15
|
+
// what's inside the braces shouldn't be translated
|
|
16
|
+
// unless it's in nested translated, and so on
|
|
17
|
+
// we can set flags to cut the string into pieces
|
|
18
|
+
// which should or should not be translated
|
|
19
|
+
const flags = [];
|
|
20
|
+
for (x = 0; x < interp.length; x++) {
|
|
21
|
+
if (interp[x] == "{") {
|
|
22
|
+
flags.push(x);
|
|
23
|
+
} else if (interp[x] == "}") {
|
|
24
|
+
flags.push(x);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
splits = flags.map((_, i) => {
|
|
29
|
+
if (i < flags.length) return interp.slice(flags[i], flags[i + 1]);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
splits.map((split, i) => {
|
|
33
|
+
translInterp += i % 2 ? translateSentence(split) : split; // only translate even ones (the odd ones are params)
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
translInterp += translateSentence(string.slice(interpEnd, string.length));
|
|
37
|
+
|
|
38
|
+
const dm = { defaultMessage: translInterp };
|
|
39
|
+
pig[k] = dm;
|
|
40
|
+
} else {
|
|
41
|
+
const dm = { defaultMessage: translateSentence(string) };
|
|
42
|
+
pig[k] = dm;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
data = JSON.stringify(pig, null, 2);
|
|
46
|
+
|
|
47
|
+
fs.writeFile("src/lang/pig.json", data, (err) => {
|
|
48
|
+
!!err && console.log(err);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
function pigLatinize(word) {
|
|
52
|
+
const isVowel = (char) => ["a", "e", "i", "o", "u"].includes(char.toLowerCase());
|
|
53
|
+
const isLetter = (char) => RegExp(/^\p{L}/, "u").test(char);
|
|
54
|
+
|
|
55
|
+
const firstLetter = Array.from(word).reduce((l, char, i) => (isLetter(char) && l < 0 ? i : l), -1);
|
|
56
|
+
|
|
57
|
+
const lastLetter = Array.from(word).reduce((l, char, i) => (isLetter(char) ? i : l), -1);
|
|
58
|
+
|
|
59
|
+
if (firstLetter == -1 && lastLetter == -1) return word; // only special chars, don't translate
|
|
60
|
+
|
|
61
|
+
const specialKBefore = word.slice(0, firstLetter) || "";
|
|
62
|
+
const specialKAfter = word.slice(lastLetter + 1, word.length + 1) || "";
|
|
63
|
+
word = word.slice(firstLetter, lastLetter + 1) || "";
|
|
64
|
+
|
|
65
|
+
if (word) {
|
|
66
|
+
if (isVowel(word[0])) {
|
|
67
|
+
word += "yay";
|
|
68
|
+
} else {
|
|
69
|
+
const firstVowel = Array.from(word).reduce((firstV, char, i) => {
|
|
70
|
+
return isVowel(char) && firstV < 0 ? i : firstV;
|
|
71
|
+
}, -1);
|
|
72
|
+
if (word[0] == word[0].toUpperCase()) {
|
|
73
|
+
word =
|
|
74
|
+
word.substring(firstVowel, firstVowel + 1).toUpperCase() +
|
|
75
|
+
word.substring(firstVowel + 1, word.length) +
|
|
76
|
+
word.substring(0, firstVowel).toLowerCase() +
|
|
77
|
+
"ay";
|
|
78
|
+
} else {
|
|
79
|
+
word = word.substring(firstVowel, word.length) + word.substring(0, firstVowel) + "ay";
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return specialKBefore + word + specialKAfter;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function translateSentence(string) {
|
|
87
|
+
let words = string.split(" ");
|
|
88
|
+
return words
|
|
89
|
+
.reduce((acc, word) => {
|
|
90
|
+
return acc + " " + pigLatinize(word);
|
|
91
|
+
}, "")
|
|
92
|
+
.substring(1); // rm leading space
|
|
93
|
+
}
|