@wp-blocks/make-pot 0.1.0 → 1.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/CODE_OF_CONDUCT.md +45 -0
- package/CONTRIBUTING.md +92 -0
- package/README.md +54 -3
- package/lib/assets/block-i18n.json +17 -0
- package/lib/assets/package-i18n.json +11 -0
- package/lib/assets/theme-i18n.json +86 -0
- package/lib/assets/wp-plugin-i18n.json +14 -0
- package/lib/assets/wp-theme-i18n.json +13 -0
- package/lib/cli/index.d.ts +1 -0
- package/lib/cli/index.js +114 -0
- package/lib/cli/index.js.map +1 -0
- package/lib/cli/parseCli.d.ts +3 -0
- package/lib/cli/parseCli.js +111 -0
- package/lib/cli/parseCli.js.map +1 -0
- package/lib/cliArgs.js +41 -8
- package/lib/cliArgs.js.map +1 -1
- package/lib/const.d.ts +112 -0
- package/lib/const.js +42 -5
- package/lib/const.js.map +1 -1
- package/lib/extractors/css.d.ts +2 -0
- package/lib/extractors/css.js +42 -0
- package/lib/extractors/css.js.map +1 -0
- package/lib/extractors/headers.d.ts +6 -0
- package/lib/extractors/headers.js +59 -0
- package/lib/extractors/headers.js.map +1 -0
- package/lib/extractors/index.d.ts +2 -0
- package/lib/extractors/index.js +60 -0
- package/lib/extractors/index.js.map +1 -0
- package/lib/extractors/json.d.ts +9 -0
- package/lib/extractors/json.js +82 -0
- package/lib/extractors/json.js.map +1 -0
- package/lib/extractors/php.d.ts +3 -0
- package/lib/extractors/php.js +49 -0
- package/lib/extractors/php.js.map +1 -0
- package/lib/extractors/schema.d.ts +13 -0
- package/lib/extractors/schema.js +121 -0
- package/lib/extractors/schema.js.map +1 -0
- package/lib/extractors/text.d.ts +1 -0
- package/lib/{extractors-text.js → extractors/text.js} +7 -10
- package/lib/extractors/text.js.map +1 -0
- package/lib/extractors/utils.d.ts +5 -0
- package/lib/extractors/utils.js +54 -0
- package/lib/extractors/utils.js.map +1 -0
- package/lib/fs/glob.d.ts +13 -0
- package/lib/fs/glob.js +95 -0
- package/lib/fs/glob.js.map +1 -0
- package/lib/fs/index.d.ts +2 -0
- package/lib/fs/index.js +69 -0
- package/lib/fs/index.js.map +1 -0
- package/lib/fs.d.ts +2 -1
- package/lib/fs.js +15 -8
- package/lib/fs.js.map +1 -1
- package/lib/index.js +5 -3
- package/lib/index.js.map +1 -1
- package/lib/makePot.d.ts +1 -1
- package/lib/makePot.js +38 -27
- package/lib/makePot.js.map +1 -1
- package/lib/maps.d.ts +122 -0
- package/lib/maps.js +73 -0
- package/lib/maps.js.map +1 -0
- package/lib/parser/consolidate.d.ts +2 -0
- package/lib/parser/consolidate.js +37 -0
- package/lib/parser/consolidate.js.map +1 -0
- package/lib/parser/exec.d.ts +3 -0
- package/lib/parser/exec.js +71 -0
- package/lib/parser/exec.js.map +1 -0
- package/lib/parser/index.d.ts +2 -0
- package/lib/parser/index.js +24 -0
- package/lib/parser/index.js.map +1 -0
- package/lib/parser/makePot.d.ts +2 -0
- package/lib/parser/makePot.js +39 -0
- package/lib/parser/makePot.js.map +1 -0
- package/lib/parser/patterns.d.ts +2 -0
- package/lib/parser/patterns.js +34 -0
- package/lib/parser/patterns.js.map +1 -0
- package/lib/parser/process.d.ts +5 -0
- package/lib/parser/process.js +71 -0
- package/lib/parser/process.js.map +1 -0
- package/lib/parser/tree.d.ts +2 -0
- package/lib/parser/tree.js +78 -0
- package/lib/parser/tree.js.map +1 -0
- package/lib/parser.d.ts +2 -2
- package/lib/parser.js +58 -57
- package/lib/parser.js.map +1 -1
- package/lib/tree.js +6 -6
- package/lib/tree.js.map +1 -1
- package/lib/types.d.ts +7 -4
- package/lib/utils/index.d.ts +8 -0
- package/lib/utils/index.js +78 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils.d.ts +3 -3
- package/lib/utils.js +16 -13
- package/lib/utils.js.map +1 -1
- package/package.json +19 -10
- package/tests/consolidate.test.ts +1 -1
- package/tests/{extract-2.old.ts → extract-2.test.ts} +10 -3
- package/tests/getFiles.old.ts +1 -1
- package/tests/getStrings.old.ts +1 -1
- package/tests/{jsonParse.test.ts → jsonParse.ts} +9 -8
- package/lib/extractors-json.d.ts +0 -9
- package/lib/extractors-json.js +0 -53
- package/lib/extractors-json.js.map +0 -1
- package/lib/extractors-maps.d.ts +0 -109
- package/lib/extractors-maps.js +0 -139
- package/lib/extractors-maps.js.map +0 -1
- package/lib/extractors-php.d.ts +0 -1
- package/lib/extractors-php.js +0 -25
- package/lib/extractors-php.js.map +0 -1
- package/lib/extractors-text.d.ts +0 -1
- package/lib/extractors-text.js.map +0 -1
- package/lib/extractors.d.ts +0 -17
- package/lib/extractors.js +0 -137
- package/lib/extractors.js.map +0 -1
- package/tests/index.html +0 -78
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/parser/tree.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAqD;AAErD,oCAAwC;AAGxC,qCAAsC;AACtC,oCAAiD;AAQjD,SAAS,eAAe,CAAC,IAAgB;;IACxC,IAAI,WAAW,GAAG,IAAI,CAAA;IACtB,IAAI,KAAK,GAAG,CAAC,CAAA;IAGb,OAAO,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACjC,IACC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,0CAAE,IAAI,MAAK,SAAS;aAChD,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,0CAAE,IAAI,CAChC,WAAW,GACX,QAAQ,CAAC,aAAa,CAAC,CAAA,EACxB,CAAC;YACF,OAAO,IAAA,8BAAsB,EAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAC,IAAI,CAAC,CAAA;QACjE,CAAC;QACD,KAAK,EAAE,CAAA;QACP,WAAW,GAAG,WAAW,CAAC,MAAoB,CAAA;IAC/C,CAAC;AACF,CAAC;AASD,SAAgB,MAAM,CACrB,UAAkB,EAClB,QAAgB;;IAGhB,MAAM,MAAM,GAAG,IAAI,qBAAM,EAAE,CAAA;IAC3B,MAAM,CAAC,WAAW,CAAC,IAAA,gBAAS,EAAC,QAAQ,CAAC,CAAC,CAAA;IAGvC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAErC,MAAM,mBAAmB,GAAuB,EAAE,CAAA;IAClD,MAAM,WAAW,GAChB,CAAA,MAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,0CAAE,WAAW,EAAE,MAAK,KAAK;QACjD,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,0BAA0B,CAAA;IAO9B,SAAS,QAAQ,CAAC,IAAgB;;QAEjC,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,MAAM;YACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC;QAGF,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,WAAW,EAAE,CAAC;YAEhC,MAAM,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,mCAAI,IAAI,CAAA;YAClD,IACC,YAAY,KAAK,IAAI;gBACrB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EACjD,CAAC;gBACF,OAAM;YACP,CAAC;YAGD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;YAC/B,IACC,QAAQ,KAAK,IAAI;gBACjB,QAAQ,CAAC,UAAU,KAAK,CAAC;gBACzB,QAAQ,CAAC,IAAI,KAAK,WAAW,EAC5B,CAAC;gBACF,OAAM;YACP,CAAC;YAID,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;YAChC,MAAM,WAAW,GAAgC,EAAE,CAAA;YAEnD,MAAM,eAAe,GACpB,qBAAa,CAAC,YAA0C,CAAC,CAAA;YAI1D,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAClD,IAAI,CAAC,KAAK,CAAC,IAAI;oBAAE,OAAM;gBAEvB,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;gBAEzC,WAAW,CAAC,UAAsC,CAAC;oBAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACzB,CAAC,CAAC,CAAA;YAGF,MAAM,OAAO,GAAuB;gBACnC,OAAO,EAAE,MAAA,WAAW,CAAC,OAAO,mCAAI,EAAE;gBAClC,KAAK,EAAE,MAAA,WAAW,CAAC,KAAK,mCAAI,EAAE;gBAC9B,YAAY,EAAE,MAAA,WAAW,CAAC,YAAY,mCAAI,EAAE;gBAC5C,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,QAAQ,EAAE;oBACT,UAAU,EAAE,MAAA,eAAe,CAAC,IAAI,CAAC,mCAAI,EAAE;oBACvC,SAAS,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,EAAE;iBACpC;aACnB,CAAA;YAED,mBAAmB,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC,mCACtC,CAAC,mBAAmB,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KACrD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GACxB,CAAA;QACF,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAGvB,OAAO,mBAAmB,CAAA;AAC3B,CAAC;AA5FD,wBA4FC"}
|
package/lib/parser.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import type { Args, TranslationStrings } from './types';
|
|
|
2
2
|
import { Glob } from 'glob';
|
|
3
3
|
export declare function getStrings(args: Args, files: Glob<{
|
|
4
4
|
cwd: string;
|
|
5
|
-
}>): Promise<TranslationStrings>;
|
|
6
|
-
export declare function runExtract(args: Args): Promise<TranslationStrings>;
|
|
5
|
+
}>): Promise<TranslationStrings[]>;
|
|
6
|
+
export declare function runExtract(args: Args): Promise<TranslationStrings[]>;
|
package/lib/parser.js
CHANGED
|
@@ -17,11 +17,10 @@ const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
|
17
17
|
const extractors_1 = require("./extractors");
|
|
18
18
|
const const_1 = require("./const");
|
|
19
19
|
const glob_1 = require("./glob");
|
|
20
|
-
const consolidate_1 = require("./consolidate");
|
|
21
20
|
function initProgress(args, filesCount) {
|
|
22
21
|
var _a;
|
|
23
22
|
if ((_a = args.options) === null || _a === void 0 ? void 0 : _a.silent)
|
|
24
|
-
return
|
|
23
|
+
return undefined;
|
|
25
24
|
const progressBar = new cli_progress_1.default.SingleBar({
|
|
26
25
|
clearOnComplete: true,
|
|
27
26
|
etaBuffer: 1000,
|
|
@@ -31,77 +30,79 @@ function initProgress(args, filesCount) {
|
|
|
31
30
|
progressBar.start(filesCount, 0);
|
|
32
31
|
return progressBar;
|
|
33
32
|
}
|
|
34
|
-
function
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (progressBar) {
|
|
44
|
-
progressBar.increment(1, {
|
|
45
|
-
filename: `Skipping ${ext} (not a valid file extension)`,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
continue;
|
|
33
|
+
function processFiles(files, args, progressBar) {
|
|
34
|
+
const tasks = [];
|
|
35
|
+
for (const file of files) {
|
|
36
|
+
const ext = file.split('.').pop() || undefined;
|
|
37
|
+
if (!ext || !const_1.allowedFiles.includes(ext)) {
|
|
38
|
+
if (progressBar) {
|
|
39
|
+
progressBar.increment(1, {
|
|
40
|
+
filename: `Skipping ${ext} file: ${file}`,
|
|
41
|
+
});
|
|
49
42
|
}
|
|
50
|
-
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const task = (0, extractors_1.parseFile)(file, args.paths.cwd).finally(() => {
|
|
51
46
|
if (progressBar) {
|
|
52
47
|
progressBar.increment(1, {
|
|
53
48
|
filename: file,
|
|
54
49
|
});
|
|
55
50
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
});
|
|
52
|
+
if (task !== null) {
|
|
53
|
+
tasks.push(task);
|
|
59
54
|
}
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
}
|
|
56
|
+
return tasks;
|
|
57
|
+
}
|
|
58
|
+
function getStrings(args, files) {
|
|
59
|
+
var _a;
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
let progressBar = undefined;
|
|
62
|
+
progressBar =
|
|
63
|
+
(_a = initProgress(args, Array.from(files.iterateSync()).length)) !== null && _a !== void 0 ? _a : undefined;
|
|
64
|
+
return yield Promise.all(processFiles(files, args, progressBar)).finally(() => {
|
|
65
|
+
if (progressBar) {
|
|
62
66
|
progressBar.stop();
|
|
67
|
+
}
|
|
63
68
|
});
|
|
64
|
-
const mergedResult = (0, consolidate_1.consolidate)(results.filter((r) => r !== null));
|
|
65
|
-
if (!((_a = args.options) === null || _a === void 0 ? void 0 : _a.silent)) {
|
|
66
|
-
console.log('📝 Found', Object.values(mergedResult).length, 'group of strings in', results.length, 'files.\n', 'In total ' +
|
|
67
|
-
Object.values(mergedResult)
|
|
68
|
-
.map((v) => Object.keys(v).length)
|
|
69
|
-
.reduce((acc, val) => acc + val, 0) +
|
|
70
|
-
' strings were found');
|
|
71
|
-
}
|
|
72
|
-
return mergedResult;
|
|
73
69
|
});
|
|
74
70
|
}
|
|
75
71
|
exports.getStrings = getStrings;
|
|
76
|
-
function
|
|
72
|
+
function getPatterns(args) {
|
|
77
73
|
var _a, _b, _c, _d, _e, _f;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
pattern.include.push('**/*.php');
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
pattern.include.push('**/*.php', '!**/blade.php');
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (((_d = args.options) === null || _d === void 0 ? void 0 : _d.skip.js) !== undefined) {
|
|
96
|
-
pattern.include.push('**/*.{js,jsx,ts,tsx,mjs,cjs}');
|
|
97
|
-
}
|
|
98
|
-
if (((_e = args.options) === null || _e === void 0 ? void 0 : _e.skip.blockJson) !== undefined) {
|
|
99
|
-
pattern.include.push('block.json');
|
|
74
|
+
const pattern = {
|
|
75
|
+
include: args.patterns.include || [],
|
|
76
|
+
exclude: args.patterns.exclude || [],
|
|
77
|
+
mergePaths: args.patterns.mergePaths,
|
|
78
|
+
subtractPaths: args.patterns.subtractPaths,
|
|
79
|
+
subtractAndMerge: args.patterns.subtractAndMerge,
|
|
80
|
+
};
|
|
81
|
+
if (((_a = args.options) === null || _a === void 0 ? void 0 : _a.skip.php) !== undefined ||
|
|
82
|
+
((_b = args.options) === null || _b === void 0 ? void 0 : _b.skip.blade) !== undefined) {
|
|
83
|
+
if (((_c = args.options) === null || _c === void 0 ? void 0 : _c.skip.blade) !== undefined) {
|
|
84
|
+
pattern.include.push('**/*.php');
|
|
100
85
|
}
|
|
101
|
-
|
|
102
|
-
pattern.include.push('
|
|
86
|
+
else {
|
|
87
|
+
pattern.include.push('**/*.php', '!**/blade.php');
|
|
103
88
|
}
|
|
89
|
+
}
|
|
90
|
+
if (((_d = args.options) === null || _d === void 0 ? void 0 : _d.skip.js) !== undefined) {
|
|
91
|
+
pattern.include.push('**/*.{js,jsx,ts,tsx,mjs,cjs}');
|
|
92
|
+
}
|
|
93
|
+
if (((_e = args.options) === null || _e === void 0 ? void 0 : _e.skip.blockJson) !== undefined) {
|
|
94
|
+
pattern.include.push('block.json');
|
|
95
|
+
}
|
|
96
|
+
if (((_f = args.options) === null || _f === void 0 ? void 0 : _f.skip.themeJson) !== undefined) {
|
|
97
|
+
pattern.include.push('theme.json');
|
|
98
|
+
}
|
|
99
|
+
return pattern;
|
|
100
|
+
}
|
|
101
|
+
function runExtract(args) {
|
|
102
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
const pattern = getPatterns(args);
|
|
104
104
|
const files = yield (0, glob_1.getFiles)(args, pattern);
|
|
105
|
+
console.log('Found ', Object.values(files).length, 'files that match the pattern');
|
|
105
106
|
return yield getStrings(args, files);
|
|
106
107
|
});
|
|
107
108
|
}
|
package/lib/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,gEAA0D;AAC1D,6CAAwC;AACxC,mCAAsC;AAEtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/lib/tree.js
CHANGED
|
@@ -15,8 +15,7 @@ function collectComments(node) {
|
|
|
15
15
|
while (currentNode && depth < 6) {
|
|
16
16
|
if (((_a = currentNode === null || currentNode === void 0 ? void 0 : currentNode.previousSibling) === null || _a === void 0 ? void 0 : _a.type) === 'comment' &&
|
|
17
17
|
((_b = currentNode === null || currentNode === void 0 ? void 0 : currentNode.previousSibling) === null || _b === void 0 ? void 0 : _b.text.toLowerCase().includes('translators'))) {
|
|
18
|
-
|
|
19
|
-
return comment;
|
|
18
|
+
return (0, utils_1.stripTranslationMarkup)(currentNode === null || currentNode === void 0 ? void 0 : currentNode.previousSibling.text);
|
|
20
19
|
}
|
|
21
20
|
depth++;
|
|
22
21
|
currentNode = currentNode.parent;
|
|
@@ -49,14 +48,15 @@ function doTree(sourceCode, filepath) {
|
|
|
49
48
|
argsNode.type !== 'arguments') {
|
|
50
49
|
return;
|
|
51
50
|
}
|
|
52
|
-
const [
|
|
51
|
+
const [_fn, raw] = node.children;
|
|
53
52
|
const translation = {};
|
|
54
53
|
const translationKeys = const_1.i18nFunctions[functionName];
|
|
55
54
|
raw.children.slice(1, -1).forEach((child, index) => {
|
|
55
|
+
if (!child.text)
|
|
56
|
+
return;
|
|
56
57
|
const currentKey = translationKeys[index];
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
child.text.slice(1, -1);
|
|
58
|
+
translation[currentKey] =
|
|
59
|
+
child.text.slice(1, -1);
|
|
60
60
|
});
|
|
61
61
|
const gettext = {
|
|
62
62
|
msgctxt: (_c = translation.msgctxt) !== null && _c !== void 0 ? _c : '',
|
package/lib/tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAqD;AAErD,mCAAuC;
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { pkgJsonHeaders, pluginHeaders, themeHeaders } from './
|
|
1
|
+
import { pkgJsonHeaders, pluginHeaders, themeHeaders } from './const';
|
|
2
2
|
import { GetTextTranslation } from 'gettext-parser';
|
|
3
3
|
export type ThemeHeadersType = keyof typeof themeHeaders;
|
|
4
4
|
export type PluginHeadersType = keyof typeof pluginHeaders;
|
|
5
5
|
export type PkgHeadersType = keyof typeof pkgJsonHeaders;
|
|
6
|
-
export type PotHeaders = (typeof pkgJsonHeaders)[PkgHeadersType] | (typeof pluginHeaders)[PluginHeadersType] | (typeof themeHeaders)[ThemeHeadersType] | '
|
|
6
|
+
export type PotHeaders = (typeof pkgJsonHeaders)[PkgHeadersType] | (typeof pluginHeaders)[PluginHeadersType] | (typeof themeHeaders)[ThemeHeadersType] | 'license';
|
|
7
7
|
export type DomainType = 'plugin' | 'theme' | 'block' | 'theme-block' | 'generic';
|
|
8
8
|
export interface Patterns {
|
|
9
9
|
mergePaths?: string[];
|
|
@@ -27,6 +27,7 @@ export interface Args {
|
|
|
27
27
|
location?: boolean;
|
|
28
28
|
packageName?: string;
|
|
29
29
|
output?: boolean;
|
|
30
|
+
fileComment?: string;
|
|
30
31
|
skip: {
|
|
31
32
|
js?: boolean;
|
|
32
33
|
php?: boolean;
|
|
@@ -36,12 +37,14 @@ export interface Args {
|
|
|
36
37
|
audit?: boolean;
|
|
37
38
|
};
|
|
38
39
|
};
|
|
39
|
-
headers?: Record<PotHeaders,
|
|
40
|
+
headers?: Record<PotHeaders, unknown>;
|
|
40
41
|
patterns: Patterns;
|
|
41
42
|
}
|
|
43
|
+
export interface I18nSchema {
|
|
44
|
+
[key: string]: string | string[] | I18nSchema | I18nSchema[];
|
|
45
|
+
}
|
|
42
46
|
export interface TranslationStrings {
|
|
43
47
|
[msgctxt: string]: {
|
|
44
48
|
[msgId: string]: GetTextTranslation;
|
|
45
49
|
};
|
|
46
50
|
}
|
|
47
|
-
export type JsonData = Record<string, any>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TranslationStrings } from '../types';
|
|
2
|
+
export declare function getCommentBlock(input: string): string;
|
|
3
|
+
export declare function removeCommentMarkup(input: string): string[] | null;
|
|
4
|
+
export declare function stripTranslationMarkup(comment: string): string;
|
|
5
|
+
export declare function stringstring(string: string | string[] | undefined): string[] | null;
|
|
6
|
+
export declare function advancedObjectMerge(obj1: TranslationStrings, obj2: TranslationStrings): TranslationStrings;
|
|
7
|
+
export declare function detectPatternType(pattern: string): 'file' | 'directory' | 'glob';
|
|
8
|
+
export declare function includeFunction(includePath: string[]): string[];
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.includeFunction = exports.detectPatternType = exports.advancedObjectMerge = exports.stringstring = exports.stripTranslationMarkup = exports.removeCommentMarkup = exports.getCommentBlock = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
function getCommentBlock(input) {
|
|
9
|
+
const commentBlock = input.match(/\/\*\*?[\s\S]*?\*\//);
|
|
10
|
+
return commentBlock !== null ? commentBlock[0] : input;
|
|
11
|
+
}
|
|
12
|
+
exports.getCommentBlock = getCommentBlock;
|
|
13
|
+
function removeCommentMarkup(input) {
|
|
14
|
+
return input.match(/[a-zA-Z].*/gm);
|
|
15
|
+
}
|
|
16
|
+
exports.removeCommentMarkup = removeCommentMarkup;
|
|
17
|
+
function stripTranslationMarkup(comment) {
|
|
18
|
+
const commentPattern = /\/\*\*?\s*(?:translators:)\s*([\s\S]*?)\s*\*\/|\/\/\s*(?:translators:)\s*(.*)$/i;
|
|
19
|
+
const matches = comment.match(commentPattern);
|
|
20
|
+
return matches ? matches[1] : comment;
|
|
21
|
+
}
|
|
22
|
+
exports.stripTranslationMarkup = stripTranslationMarkup;
|
|
23
|
+
function stringstring(string) {
|
|
24
|
+
if (typeof string === 'string') {
|
|
25
|
+
if (string.includes(',')) {
|
|
26
|
+
return string.split(',');
|
|
27
|
+
}
|
|
28
|
+
return [string];
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
exports.stringstring = stringstring;
|
|
33
|
+
function advancedObjectMerge(obj1, obj2) {
|
|
34
|
+
const merged = Object.assign({}, obj1);
|
|
35
|
+
for (const key in obj2) {
|
|
36
|
+
if (Object.prototype.hasOwnProperty.call(obj2, key)) {
|
|
37
|
+
merged[key] =
|
|
38
|
+
obj1[key] && obj1[key].toString() === '[object Object]'
|
|
39
|
+
?
|
|
40
|
+
advancedObjectMerge(obj1[key], obj2[key])
|
|
41
|
+
: obj2[key];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return merged;
|
|
45
|
+
}
|
|
46
|
+
exports.advancedObjectMerge = advancedObjectMerge;
|
|
47
|
+
function detectPatternType(pattern) {
|
|
48
|
+
const containsFileExtension = pattern.includes('.');
|
|
49
|
+
const containsDirectorySeparator = pattern.includes(path_1.default.sep) || pattern.endsWith(path_1.default.sep);
|
|
50
|
+
if (pattern.includes('*')) {
|
|
51
|
+
return 'glob';
|
|
52
|
+
}
|
|
53
|
+
else if (!containsFileExtension && !containsDirectorySeparator) {
|
|
54
|
+
return 'directory';
|
|
55
|
+
}
|
|
56
|
+
else if (containsFileExtension && !containsDirectorySeparator) {
|
|
57
|
+
return 'file';
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return 'glob';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.detectPatternType = detectPatternType;
|
|
64
|
+
function includeFunction(includePath) {
|
|
65
|
+
return includePath.map((path) => {
|
|
66
|
+
const type = detectPatternType(path);
|
|
67
|
+
switch (type) {
|
|
68
|
+
case 'directory':
|
|
69
|
+
return path + '/**';
|
|
70
|
+
case 'file':
|
|
71
|
+
return '**/' + path;
|
|
72
|
+
default:
|
|
73
|
+
return path;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
exports.includeFunction = includeFunction;
|
|
78
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function generateHeaderComments(args: Args): string;
|
|
1
|
+
import { TranslationStrings } from './types';
|
|
3
2
|
export declare function getCommentBlock(input: string): string;
|
|
4
|
-
export declare function removeCommentMarkup(input: string): string;
|
|
3
|
+
export declare function removeCommentMarkup(input: string): string[] | null;
|
|
5
4
|
export declare function stripTranslationMarkup(comment: string): string;
|
|
6
5
|
export declare function stringstring(string: string | string[] | undefined): string[] | null;
|
|
6
|
+
export declare function advancedObjectMerge(obj1: TranslationStrings, obj2: TranslationStrings): TranslationStrings;
|
|
7
7
|
export declare function detectPatternType(pattern: string): 'file' | 'directory' | 'glob';
|
|
8
8
|
export declare function includeFunction(includePath: string[]): string[];
|
package/lib/utils.js
CHANGED
|
@@ -3,26 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.includeFunction = exports.detectPatternType = exports.
|
|
6
|
+
exports.includeFunction = exports.detectPatternType = exports.advancedObjectMerge = exports.stringstring = exports.stripTranslationMarkup = exports.removeCommentMarkup = exports.getCommentBlock = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
function generateHeaderComments(args) {
|
|
9
|
-
var _a, _b, _c, _d, _e, _f;
|
|
10
|
-
const { author, email, license } = {
|
|
11
|
-
author: (_b = (_a = args.headers) === null || _a === void 0 ? void 0 : _a.author) !== null && _b !== void 0 ? _b : 'AUTHOR',
|
|
12
|
-
email: (_d = (_c = args.headers) === null || _c === void 0 ? void 0 : _c.email) !== null && _d !== void 0 ? _d : 'EMAIL',
|
|
13
|
-
license: (_f = (_e = args.headers) === null || _e === void 0 ? void 0 : _e.license) !== null && _f !== void 0 ? _f : 'gpl-2.0 or later',
|
|
14
|
-
};
|
|
15
|
-
return `# Copyright (C) ${new Date().getFullYear()} ${author} (${email})
|
|
16
|
-
# This file is distributed under the ${license}.`;
|
|
17
|
-
}
|
|
18
|
-
exports.generateHeaderComments = generateHeaderComments;
|
|
19
8
|
function getCommentBlock(input) {
|
|
20
9
|
const commentBlock = input.match(/\/\*\*?[\s\S]*?\*\//);
|
|
21
10
|
return commentBlock !== null ? commentBlock[0] : input;
|
|
22
11
|
}
|
|
23
12
|
exports.getCommentBlock = getCommentBlock;
|
|
24
13
|
function removeCommentMarkup(input) {
|
|
25
|
-
return input.
|
|
14
|
+
return input.match(/[a-zA-Z].*/gm);
|
|
26
15
|
}
|
|
27
16
|
exports.removeCommentMarkup = removeCommentMarkup;
|
|
28
17
|
function stripTranslationMarkup(comment) {
|
|
@@ -41,6 +30,20 @@ function stringstring(string) {
|
|
|
41
30
|
return null;
|
|
42
31
|
}
|
|
43
32
|
exports.stringstring = stringstring;
|
|
33
|
+
function advancedObjectMerge(obj1, obj2) {
|
|
34
|
+
const merged = Object.assign({}, obj1);
|
|
35
|
+
for (const key in obj2) {
|
|
36
|
+
if (Object.prototype.hasOwnProperty.call(obj2, key)) {
|
|
37
|
+
merged[key] =
|
|
38
|
+
obj1[key] && obj1[key].toString() === '[object Object]'
|
|
39
|
+
?
|
|
40
|
+
advancedObjectMerge(obj1[key], obj2[key])
|
|
41
|
+
: obj2[key];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return merged;
|
|
45
|
+
}
|
|
46
|
+
exports.advancedObjectMerge = advancedObjectMerge;
|
|
44
47
|
function detectPatternType(pattern) {
|
|
45
48
|
const containsFileExtension = pattern.includes('.');
|
|
46
49
|
const containsDirectorySeparator = pattern.includes(path_1.default.sep) || pattern.endsWith(path_1.default.sep);
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wp-blocks/make-pot",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "A Node.js script for generating a POT file from source code",
|
|
5
5
|
"author": "Erik Golinelli <https://github.com/erikyo>",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -12,27 +12,36 @@
|
|
|
12
12
|
"lint": "eslint ./src ./tests --fix",
|
|
13
13
|
"test": "jest",
|
|
14
14
|
"update-snapshots": "jest -- -u",
|
|
15
|
-
"run": "node ./lib/index.js tests/fixtures/"
|
|
15
|
+
"run": "node ./lib/index.js tests/fixtures/vinyl/"
|
|
16
16
|
},
|
|
17
17
|
"bin": {
|
|
18
18
|
"make-pot": "lib/index.js"
|
|
19
19
|
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/wp-blocks/makePot.git"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/wp-blocks/makePot/issues"
|
|
26
|
+
},
|
|
20
27
|
"dependencies": {
|
|
28
|
+
"axios": "^1.6.7",
|
|
21
29
|
"cli-progress": "^3.12.0",
|
|
30
|
+
"gettext-merger": "^0.1.0",
|
|
22
31
|
"gettext-parser": "^7.0.1",
|
|
23
32
|
"glob": "^10.3.10",
|
|
24
33
|
"tree-sitter": "^0.20.6",
|
|
25
|
-
"tree-sitter-javascript": "^0.20.
|
|
34
|
+
"tree-sitter-javascript": "^0.20.4",
|
|
26
35
|
"tree-sitter-php": "^0.20.0",
|
|
27
|
-
"tree-sitter-typescript": "^0.20.
|
|
36
|
+
"tree-sitter-typescript": "^0.20.5",
|
|
28
37
|
"yargs": "^17.7.2"
|
|
29
38
|
},
|
|
30
39
|
"devDependencies": {
|
|
31
40
|
"@jest/globals": "^29.7.0",
|
|
32
41
|
"@types/cli-progress": "^3.11.5",
|
|
33
42
|
"@types/gettext-parser": "^4.0.4",
|
|
34
|
-
"@types/jest": "^29.5.
|
|
35
|
-
"@types/node": "^20.
|
|
43
|
+
"@types/jest": "^29.5.12",
|
|
44
|
+
"@types/node": "^20.11.19",
|
|
36
45
|
"@types/strip-comments": "^2.0.4",
|
|
37
46
|
"@types/yargs": "^17.0.32",
|
|
38
47
|
"@typescript-eslint/eslint-plugin": "^6.18.1",
|
|
@@ -43,11 +52,11 @@
|
|
|
43
52
|
"eslint-plugin-import": "^2.29.1",
|
|
44
53
|
"eslint-plugin-n": "^16.6.1",
|
|
45
54
|
"eslint-plugin-promise": "^6.1.1",
|
|
46
|
-
"husky": "^
|
|
55
|
+
"husky": "^9.0.11",
|
|
47
56
|
"jest": "^29.7.0",
|
|
48
|
-
"lint-staged": "^15.2.
|
|
49
|
-
"prettier": "3.2.
|
|
50
|
-
"ts-jest": "^29.1.
|
|
57
|
+
"lint-staged": "^15.2.2",
|
|
58
|
+
"prettier": "3.2.5",
|
|
59
|
+
"ts-jest": "^29.1.2",
|
|
51
60
|
"typescript": "^5.3.3"
|
|
52
61
|
}
|
|
53
62
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect } from '@jest/globals'
|
|
2
|
-
import { doTree } from '../src/tree'
|
|
2
|
+
import { doTree } from '../src/parser/tree'
|
|
3
3
|
|
|
4
4
|
describe('getStrings-extra', () => {
|
|
5
5
|
/** see wp cli tests */
|
|
@@ -90,8 +90,15 @@ describe('getStrings-extra', () => {
|
|
|
90
90
|
|
|
91
91
|
const filename = 'filename.php'
|
|
92
92
|
|
|
93
|
-
const
|
|
93
|
+
const r = doTree(content, filename)
|
|
94
|
+
const res = Object.values(r)[0]
|
|
95
|
+
const translations = Object.keys(res)
|
|
96
|
+
const comments = Object.entries(res).filter(
|
|
97
|
+
([x, translation]) => !!translation.comments?.translator
|
|
98
|
+
)
|
|
94
99
|
|
|
95
|
-
expect(
|
|
100
|
+
expect(translations.length).toBeGreaterThanOrEqual(19)
|
|
101
|
+
expect(comments.length).toBeGreaterThanOrEqual(8)
|
|
102
|
+
expect(res).toMatchSnapshot()
|
|
96
103
|
})
|
|
97
104
|
})
|
package/tests/getFiles.old.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { describe, expect } from '@jest/globals'
|
|
2
2
|
import { getFiles } from '../src/glob'
|
|
3
3
|
import { Args, DomainType } from '../src/types'
|
|
4
|
-
import { parseCliArgs } from '../src/cliArgs'
|
|
5
4
|
import path from 'path'
|
|
5
|
+
import { parseCliArgs } from '../src/cli/parseCli'
|
|
6
6
|
|
|
7
7
|
describe('getFiles', () => {
|
|
8
8
|
const DEFAULTS = parseCliArgs({
|
package/tests/getStrings.old.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect } from '@jest/globals'
|
|
2
|
-
import { getStrings } from '../src/parser'
|
|
3
2
|
import { Args, DomainType } from '../src/types'
|
|
4
3
|
import { getFiles } from '../src/glob'
|
|
4
|
+
import { getStrings } from '../src/parser/process'
|
|
5
5
|
|
|
6
6
|
const args: Args = {
|
|
7
7
|
slug: 'plugin-slug',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect } from '@jest/globals'
|
|
2
|
-
import { parseJsonFile } from '../src/extractors
|
|
2
|
+
import { parseJsonFile } from '../src/extractors/json'
|
|
3
3
|
import fs from 'fs'
|
|
4
4
|
|
|
5
5
|
describe('should parse json', () => {
|
|
@@ -15,38 +15,39 @@ describe('should parse json', () => {
|
|
|
15
15
|
msgstr: [],
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
|
-
'block
|
|
18
|
+
'block description': {
|
|
19
19
|
description: {
|
|
20
20
|
comments: {
|
|
21
21
|
reference: 'block/block.json',
|
|
22
22
|
},
|
|
23
|
-
msgctxt: 'block
|
|
23
|
+
msgctxt: 'block description',
|
|
24
24
|
msgid: 'description',
|
|
25
25
|
msgstr: [],
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
|
-
'block
|
|
28
|
+
'block keyword': {
|
|
29
29
|
undefined: {
|
|
30
30
|
comments: {
|
|
31
31
|
reference: 'block/block.json',
|
|
32
32
|
},
|
|
33
|
-
msgctxt: 'block
|
|
33
|
+
msgctxt: 'block keyword',
|
|
34
|
+
msgid: undefined,
|
|
34
35
|
msgstr: [],
|
|
35
36
|
},
|
|
36
37
|
},
|
|
37
|
-
'block
|
|
38
|
+
'block title': {
|
|
38
39
|
title: {
|
|
39
40
|
comments: {
|
|
40
41
|
reference: 'block/block.json',
|
|
41
42
|
},
|
|
42
|
-
msgctxt: 'block
|
|
43
|
+
msgctxt: 'block title',
|
|
43
44
|
msgid: 'title',
|
|
44
45
|
msgstr: [],
|
|
45
46
|
},
|
|
46
47
|
},
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
const result = parseJsonFile({
|
|
50
|
+
const result = await parseJsonFile({
|
|
50
51
|
sourceCode: fs.readFileSync(
|
|
51
52
|
'tests/fixtures/block/block.json',
|
|
52
53
|
'utf8'
|
package/lib/extractors-json.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { TranslationStrings } from './types';
|
|
2
|
-
import { GetTextTranslation } from 'gettext-parser';
|
|
3
|
-
export declare function parseJsonFile(opts: {
|
|
4
|
-
sourceCode: string;
|
|
5
|
-
filename: 'block.json' | 'theme.json';
|
|
6
|
-
filepath: string;
|
|
7
|
-
}): TranslationStrings;
|
|
8
|
-
export declare function getJsonComment(key: string, type?: 'block.json' | 'theme.json'): string;
|
|
9
|
-
export declare function jsonString(key: string, data: string, path: string, type?: 'block.json' | 'theme.json'): GetTextTranslation;
|