@formatjs/cli
Version:
A CLI for formatjs.
38 lines (37 loc) • 1.3 kB
JavaScript
import { fileURLToPath as _furl } from "node:url";
import { dirname as _dname } from "node:path";
_dname(_furl(import.meta.url));
import { preprocess, traverse } from "@glimmer/syntax";
//#region packages/cli-lib/hbs_extractor.ts
function extractText(node, fileName, options) {
if (!options.onMsgExtracted) return;
if (!options.overrideIdFn) return;
if (node.path.type !== "PathExpression") return;
if (["format-message", "formatMessage"].includes(node.path.original)) {
let [first, second] = node.params;
if (first.type !== "StringLiteral") return;
let message = first?.value;
let desc;
if (second?.type === "StringLiteral") desc = second.value?.trim().replace(/\s+/gm, " ");
let defaultMessage = message?.trim().replace(/\s+/gm, " ");
let id = typeof options.overrideIdFn === "string" ? options.overrideIdFn : options.overrideIdFn(void 0, defaultMessage, desc, fileName);
options.onMsgExtracted(fileName, [{
id,
defaultMessage,
description: desc
}]);
}
}
function parseFile(source, fileName, options) {
traverse(preprocess(source), {
MustacheStatement(node) {
extractText(node, fileName, options);
},
SubExpression(node) {
extractText(node, fileName, options);
}
});
}
//#endregion
export { parseFile };
//# sourceMappingURL=hbs_extractor-DC74dtk6.js.map