@wp-blocks/make-pot 0.2.2 → 1.0.1
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/.github/workflows/node.js.yml +33 -0
- package/.github/workflows/tsDoc.yml +52 -0
- package/README.md +53 -34
- package/lib/assets/package-i18n.json +13 -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 +36 -4
- package/lib/cliArgs.js.map +1 -1
- package/lib/const.d.ts +114 -0
- package/lib/const.js +40 -3
- package/lib/const.js.map +1 -1
- package/lib/extractors/css.js +13 -2
- package/lib/extractors/css.js.map +1 -1
- package/lib/extractors/headers.d.ts +3 -5
- package/lib/extractors/headers.js +19 -13
- package/lib/extractors/headers.js.map +1 -1
- package/lib/extractors/index.d.ts +1 -2
- package/lib/extractors/index.js +9 -44
- package/lib/extractors/index.js.map +1 -1
- package/lib/extractors/json.d.ts +5 -3
- package/lib/extractors/json.js +48 -4
- package/lib/extractors/json.js.map +1 -1
- package/lib/extractors/php.js +8 -15
- package/lib/extractors/php.js.map +1 -1
- package/lib/extractors/schema.js +5 -1
- package/lib/extractors/schema.js.map +1 -1
- package/lib/extractors/text.js +2 -6
- package/lib/extractors/text.js.map +1 -1
- package/lib/extractors/utils.d.ts +3 -3
- package/lib/extractors/utils.js +34 -25
- package/lib/extractors/utils.js.map +1 -1
- 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 -5
- package/lib/index.js.map +1 -1
- package/lib/makePot.d.ts +1 -1
- package/lib/makePot.js +20 -13
- package/lib/makePot.js.map +1 -1
- package/lib/maps.d.ts +1 -3
- package/lib/maps.js +12 -3
- package/lib/maps.js.map +1 -1
- 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 +33 -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 +70 -0
- package/lib/parser/process.js.map +1 -0
- package/lib/parser/tree.d.ts +2 -0
- package/lib/parser/tree.js +87 -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/types.d.ts +4 -3
- 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 +1 -1
- package/lib/utils.js +1 -1
- package/lib/utils.js.map +1 -1
- package/package.json +1 -1
- package/tests/consolidate.test.ts +1 -1
- package/tests/extract-2.test.ts +1 -1
- package/tests/{extract.old.ts → extract.test.ts} +20 -18
- package/tests/getFiles.old.ts +1 -1
- package/tests/getStrings.old.ts +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.makePot = void 0;
|
|
16
|
+
const headers_1 = require("../extractors/headers");
|
|
17
|
+
const fs_1 = require("../fs");
|
|
18
|
+
const path_1 = __importDefault(require("path"));
|
|
19
|
+
const json_1 = require("../extractors/json");
|
|
20
|
+
const exec_1 = require("./exec");
|
|
21
|
+
function makePot(args) {
|
|
22
|
+
var _a;
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const pkgData = (0, json_1.extractPackageJson)(args);
|
|
25
|
+
const metadata = (0, headers_1.extractMainFileData)(args);
|
|
26
|
+
args.headers = Object.assign(Object.assign(Object.assign({}, args.headers), pkgData), metadata);
|
|
27
|
+
const jsonTranslations = yield (0, exec_1.exec)(args);
|
|
28
|
+
(0, fs_1.writeFile)(jsonTranslations, path_1.default.join(process.cwd(), args.paths.out, `${args === null || args === void 0 ? void 0 : args.slug}.${((_a = args.options) === null || _a === void 0 ? void 0 : _a.json) ? 'json' : 'pot'}`));
|
|
29
|
+
return jsonTranslations;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
exports.makePot = makePot;
|
|
33
|
+
//# sourceMappingURL=makePot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makePot.js","sourceRoot":"","sources":["../../src/parser/makePot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,mDAA2D;AAC3D,8BAAiC;AACjC,gDAAuB;AACvB,6CAAuD;AACvD,iCAA6B;AAQ7B,SAAsB,OAAO,CAAC,IAAU;;;QAEvC,MAAM,OAAO,GAAG,IAAA,yBAAkB,EAAC,IAAI,CAAC,CAAA;QAGxC,MAAM,QAAQ,GAAG,IAAA,6BAAmB,EAAC,IAAI,CAAC,CAAA;QAG1C,IAAI,CAAC,OAAO,GAAG,8CACX,IAAI,CAAC,OAAO,GACZ,OAAO,GACP,QAAQ,CACQ,CAAA;QAGpB,MAAM,gBAAgB,GAAG,MAAM,IAAA,WAAI,EAAC,IAAI,CAAC,CAAA;QAEzC,IAAA,cAAS,EACR,gBAAgB,EAChB,cAAI,CAAC,IAAI,CACR,OAAO,CAAC,GAAG,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,GAAG,EACd,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CACtD,CACD,CAAA;QAED,OAAO,gBAAgB,CAAA;;CACvB;AA3BD,0BA2BC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPatterns = void 0;
|
|
4
|
+
function getPatterns(args) {
|
|
5
|
+
var _a, _b, _c, _d, _e, _f;
|
|
6
|
+
const pattern = {
|
|
7
|
+
include: args.patterns.include || [],
|
|
8
|
+
exclude: args.patterns.exclude || [],
|
|
9
|
+
mergePaths: args.patterns.mergePaths,
|
|
10
|
+
subtractPaths: args.patterns.subtractPaths,
|
|
11
|
+
subtractAndMerge: args.patterns.subtractAndMerge,
|
|
12
|
+
};
|
|
13
|
+
if (((_a = args.options) === null || _a === void 0 ? void 0 : _a.skip.php) !== undefined ||
|
|
14
|
+
((_b = args.options) === null || _b === void 0 ? void 0 : _b.skip.blade) !== undefined) {
|
|
15
|
+
if (((_c = args.options) === null || _c === void 0 ? void 0 : _c.skip.blade) !== undefined) {
|
|
16
|
+
pattern.include.push('**/*.php');
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
pattern.include.push('**/*.php', '!**/blade.php');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (((_d = args.options) === null || _d === void 0 ? void 0 : _d.skip.js) !== undefined) {
|
|
23
|
+
pattern.include.push('**/*.{js,jsx,ts,tsx,mjs,cjs}');
|
|
24
|
+
}
|
|
25
|
+
if (((_e = args.options) === null || _e === void 0 ? void 0 : _e.skip.blockJson) !== undefined) {
|
|
26
|
+
pattern.include.push('block.json');
|
|
27
|
+
}
|
|
28
|
+
if (((_f = args.options) === null || _f === void 0 ? void 0 : _f.skip.themeJson) !== undefined) {
|
|
29
|
+
pattern.include.push('theme.json');
|
|
30
|
+
}
|
|
31
|
+
return pattern;
|
|
32
|
+
}
|
|
33
|
+
exports.getPatterns = getPatterns;
|
|
34
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/parser/patterns.ts"],"names":[],"mappings":";;;AAOA,SAAgB,WAAW,CAAC,IAAU;;IACrC,MAAM,OAAO,GAAG;QACf,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE;QACpC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE;QACpC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;QACpC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;QAC1C,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;KACpC,CAAA;IAIb,IACC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,GAAG,MAAK,SAAS;QACpC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,MAAK,SAAS,EACrC,CAAC;QACF,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,MAAK,SAAS,EAAE,CAAC;YAE5C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;QAClD,CAAC;IACF,CAAC;IAGD,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,EAAE,MAAK,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,SAAS,MAAK,SAAS,EAAE,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,SAAS,MAAK,SAAS,EAAE,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AArCD,kCAqCC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getStrings = void 0;
|
|
16
|
+
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
17
|
+
const const_1 = require("../const");
|
|
18
|
+
const extractors_1 = require("../extractors");
|
|
19
|
+
function initProgress(args, filesCount) {
|
|
20
|
+
var _a;
|
|
21
|
+
if ((_a = args.options) === null || _a === void 0 ? void 0 : _a.silent)
|
|
22
|
+
return undefined;
|
|
23
|
+
const progressBar = new cli_progress_1.default.SingleBar({
|
|
24
|
+
clearOnComplete: true,
|
|
25
|
+
etaBuffer: 1000,
|
|
26
|
+
hideCursor: true,
|
|
27
|
+
format: ' {bar} {percentage}% | ETA: {eta}s | {filename} | {value}/{total}',
|
|
28
|
+
}, cli_progress_1.default.Presets.shades_classic);
|
|
29
|
+
progressBar.start(filesCount, 0);
|
|
30
|
+
return progressBar;
|
|
31
|
+
}
|
|
32
|
+
function processFiles(files, args, progressBar) {
|
|
33
|
+
const tasks = [];
|
|
34
|
+
for (const file of files) {
|
|
35
|
+
const ext = file.split('.').pop() || undefined;
|
|
36
|
+
if (!ext || !const_1.allowedFiles.includes(ext)) {
|
|
37
|
+
if (progressBar) {
|
|
38
|
+
progressBar.increment(1, {
|
|
39
|
+
filename: `Skipping ${ext} file: ${file}`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const task = (0, extractors_1.parseFile)(file, args.paths.cwd).finally(() => {
|
|
45
|
+
if (progressBar) {
|
|
46
|
+
progressBar.increment(1, {
|
|
47
|
+
filename: file,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
if (task !== null) {
|
|
52
|
+
tasks.push(task);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return tasks;
|
|
56
|
+
}
|
|
57
|
+
function getStrings(args, files) {
|
|
58
|
+
var _a;
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
let progressBar = undefined;
|
|
61
|
+
progressBar =
|
|
62
|
+
(_a = initProgress(args, Array.from(files.iterateSync()).length)) !== null && _a !== void 0 ? _a : undefined;
|
|
63
|
+
const strings = yield Promise.all(processFiles(files, args, progressBar));
|
|
64
|
+
if (progressBar)
|
|
65
|
+
progressBar.stop();
|
|
66
|
+
return strings;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
exports.getStrings = getStrings;
|
|
70
|
+
//# sourceMappingURL=process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/parser/process.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,gEAAqD;AAErD,oCAAuC;AACvC,8CAAyC;AASzC,SAAS,YAAY,CAAC,IAAU,EAAE,UAAkB;;IACnD,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM;QAAE,OAAO,SAAS,CAAA;IAE1C,MAAM,WAAW,GAAG,IAAI,sBAAW,CAAC,SAAS,CAC5C;QACC,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,mEAAmE;KAC3E,EACD,sBAAW,CAAC,OAAO,CAAC,cAAc,CAClC,CAAA;IAED,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAGhC,OAAO,WAAW,CAAA;AACnB,CAAC;AAUD,SAAS,YAAY,CACpB,KAA4B,EAC5B,IAAU,EACV,WAAuB;IAEvB,MAAM,KAAK,GAAkC,EAAE,CAAA;IAG/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAA;QAG9C,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAEzC,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE;oBACxB,QAAQ,EAAE,YAAY,GAAG,UAAU,IAAI,EAAE;iBACzC,CAAC,CAAA;YACH,CAAC;YACD,SAAQ;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,sBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACzD,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE;oBACxB,QAAQ,EAAE,IAAI;iBACd,CAAC,CAAA;YACH,CAAC;QACF,CAAC,CAAC,CAAA;QAGF,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,IAAmC,CAAC,CAAA;QAChD,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC;AASD,SAAsB,UAAU,CAAC,IAAU,EAAE,KAA4B;;;QAIxE,IAAI,WAAW,GAA0B,SAAS,CAAA;QAClD,WAAW;YACV,MAAA,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,mCAAI,SAAS,CAAA;QAExE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;QAEzE,IAAI,WAAW;YAAE,WAAW,CAAC,IAAI,EAAE,CAAA;QAEnC,OAAO,OAAO,CAAA;;CACd;AAbD,gCAaC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
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.doTree = void 0;
|
|
7
|
+
const tree_sitter_1 = __importDefault(require("tree-sitter"));
|
|
8
|
+
const const_1 = require("../const");
|
|
9
|
+
const glob_1 = require("../fs/glob");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
function collectComments(node) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
let currentNode = node;
|
|
14
|
+
let depth = 0;
|
|
15
|
+
while (currentNode && depth < 6) {
|
|
16
|
+
if (((_a = currentNode === null || currentNode === void 0 ? void 0 : currentNode.previousSibling) === null || _a === void 0 ? void 0 : _a.type) === 'comment' &&
|
|
17
|
+
((_b = currentNode === null || currentNode === void 0 ? void 0 : currentNode.previousSibling) === null || _b === void 0 ? void 0 : _b.text.toLowerCase().includes('translators'))) {
|
|
18
|
+
return (0, utils_1.stripTranslationMarkup)(currentNode === null || currentNode === void 0 ? void 0 : currentNode.previousSibling.text);
|
|
19
|
+
}
|
|
20
|
+
depth++;
|
|
21
|
+
currentNode = currentNode.parent;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function doTree(sourceCode, filepath) {
|
|
25
|
+
var _a;
|
|
26
|
+
const parser = new tree_sitter_1.default();
|
|
27
|
+
parser.setLanguage((0, glob_1.getParser)(filepath));
|
|
28
|
+
const tree = parser.parse(sourceCode);
|
|
29
|
+
const gettextTranslations = {};
|
|
30
|
+
const typeToMatch = ((_a = filepath.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'php'
|
|
31
|
+
? 'call_expression'
|
|
32
|
+
: 'function_call_expression';
|
|
33
|
+
function traverse(node) {
|
|
34
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
35
|
+
if (node === null || node === void 0 ? void 0 : node.children.length)
|
|
36
|
+
for (const child of node.children) {
|
|
37
|
+
traverse(child);
|
|
38
|
+
}
|
|
39
|
+
if ((node === null || node === void 0 ? void 0 : node.type) === typeToMatch) {
|
|
40
|
+
const functionName = (_b = (_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : null;
|
|
41
|
+
if (functionName === null ||
|
|
42
|
+
!Object.keys(const_1.i18nFunctions).includes(functionName)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const argsNode = node.lastChild;
|
|
46
|
+
if (argsNode === null ||
|
|
47
|
+
argsNode.childCount === 0 ||
|
|
48
|
+
argsNode.type !== 'arguments') {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const [_fn, raw] = node.children;
|
|
52
|
+
const translation = {};
|
|
53
|
+
const translationKeys = const_1.i18nFunctions[functionName];
|
|
54
|
+
const children = raw.children.slice(1, -1);
|
|
55
|
+
let translationKeyIndex = 0;
|
|
56
|
+
for (const child of children) {
|
|
57
|
+
let node = child;
|
|
58
|
+
if (child.type === "argument") {
|
|
59
|
+
if (child.children.length === 0)
|
|
60
|
+
continue;
|
|
61
|
+
node = child.children[0];
|
|
62
|
+
}
|
|
63
|
+
if (node.type !== "string")
|
|
64
|
+
continue;
|
|
65
|
+
const currentKey = translationKeys[translationKeyIndex];
|
|
66
|
+
translation[currentKey] =
|
|
67
|
+
child.text.slice(1, -1);
|
|
68
|
+
translationKeyIndex += 1;
|
|
69
|
+
}
|
|
70
|
+
const gettext = {
|
|
71
|
+
msgctxt: (_c = translation.msgctxt) !== null && _c !== void 0 ? _c : '',
|
|
72
|
+
msgid: (_d = translation.msgid) !== null && _d !== void 0 ? _d : '',
|
|
73
|
+
msgid_plural: (_e = translation.msgid_plural) !== null && _e !== void 0 ? _e : '',
|
|
74
|
+
msgstr: translation.msgid_plural ? ['', ''] : [''],
|
|
75
|
+
comments: {
|
|
76
|
+
translator: (_f = collectComments(node)) !== null && _f !== void 0 ? _f : '',
|
|
77
|
+
reference: `${filepath}:${node.startPosition.row + 1}`,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
gettextTranslations[(_g = gettext.msgctxt) !== null && _g !== void 0 ? _g : ''] = Object.assign(Object.assign({}, (gettextTranslations[(_h = gettext.msgctxt) !== null && _h !== void 0 ? _h : ''] || {})), { [gettext.msgid]: gettext });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
traverse(tree.rootNode);
|
|
84
|
+
return gettextTranslations;
|
|
85
|
+
}
|
|
86
|
+
exports.doTree = doTree;
|
|
87
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/parser/tree.ts"],"names":[],"mappings":"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"}
|
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} file: ${file}`,
|
|
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/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
|
-
export type PkgHeadersType = keyof pkgJsonHeaders;
|
|
6
|
-
export type PotHeaders = pkgJsonHeaders[PkgHeadersType] | (typeof pluginHeaders)[PluginHeadersType] | (typeof themeHeaders)[ThemeHeadersType] | '
|
|
5
|
+
export type PkgHeadersType = keyof typeof pkgJsonHeaders;
|
|
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;
|
|
@@ -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);
|
|
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,6 +1,6 @@
|
|
|
1
1
|
import { TranslationStrings } from './types';
|
|
2
2
|
export declare function getCommentBlock(input: string): string;
|
|
3
|
-
export declare function removeCommentMarkup(input: string): string;
|
|
3
|
+
export declare function removeCommentMarkup(input: string): string[] | null;
|
|
4
4
|
export declare function stripTranslationMarkup(comment: string): string;
|
|
5
5
|
export declare function stringstring(string: string | string[] | undefined): string[] | null;
|
|
6
6
|
export declare function advancedObjectMerge(obj1: TranslationStrings, obj2: TranslationStrings): TranslationStrings;
|
package/lib/utils.js
CHANGED
|
@@ -11,7 +11,7 @@ function getCommentBlock(input) {
|
|
|
11
11
|
}
|
|
12
12
|
exports.getCommentBlock = getCommentBlock;
|
|
13
13
|
function removeCommentMarkup(input) {
|
|
14
|
-
return input.
|
|
14
|
+
return input.match(/[a-zA-Z].*/gm);
|
|
15
15
|
}
|
|
16
16
|
exports.removeCommentMarkup = removeCommentMarkup;
|
|
17
17
|
function stripTranslationMarkup(comment) {
|
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
package/tests/extract-2.test.ts
CHANGED