@jsverse/transloco-keys-manager
Version:
Extract translatable keys from projects that uses Transloco
99 lines • 3.58 kB
JavaScript
import { Call, Interpolation, parseTemplate as ngParseTemplate, PropertyRead, TmplAstBoundAttribute, TmplAstBoundText, TmplAstDeferredBlock, TmplAstDeferredBlockError, TmplAstDeferredBlockLoading, TmplAstDeferredBlockPlaceholder, TmplAstElement, TmplAstForLoopBlock, TmplAstForLoopBlockEmpty, TmplAstIfBlock, TmplAstIfBlockBranch, TmplAstSwitchBlock, TmplAstSwitchBlockCase, TmplAstTemplate, TmplAstTextAttribute } from '@angular/compiler';
import { readFile } from '../../utils/file.utils.js';
import { isLiteralMap } from '@jsverse/angular-utils';
export function isTemplate(node) {
return node instanceof TmplAstTemplate;
}
export function isElement(node) {
return node instanceof TmplAstElement;
}
export function isBoundText(node) {
return node instanceof TmplAstBoundText;
}
export function isBoundAttribute(node) {
return node instanceof TmplAstBoundAttribute;
}
export function isTextAttribute(node) {
return node instanceof TmplAstTextAttribute;
}
export function isInterpolation(ast) {
return ast instanceof Interpolation;
}
export function isCall(ast) {
return ast instanceof Call;
}
export function isPropertyRead(ast) {
return ast instanceof PropertyRead;
}
export function isNgTemplateTag(node) {
return node.tagName === 'ng-template';
}
export function parseTemplate(config, options) {
const { file, content } = config;
const resolvedContent = content || readFile(file);
return ngParseTemplate(resolvedContent, file, options);
}
export function isSupportedNode(node, predicates) {
return predicates.some((predicate) => predicate(node));
}
export function isBlockWithChildren(node) {
return (node instanceof TmplAstDeferredBlockError ||
node instanceof TmplAstDeferredBlockLoading ||
node instanceof TmplAstDeferredBlockPlaceholder ||
node instanceof TmplAstForLoopBlockEmpty ||
node instanceof TmplAstIfBlockBranch ||
node instanceof TmplAstSwitchBlockCase);
}
export function isTmplAstForLoopBlock(node) {
return node instanceof TmplAstForLoopBlock;
}
export function isTmplAstDeferredBlock(node) {
return node instanceof TmplAstDeferredBlock;
}
export function isTmplAstIfBlock(node) {
return node instanceof TmplAstIfBlock;
}
export function isTmplAstSwitchBlock(node) {
return node instanceof TmplAstSwitchBlock;
}
export function isBlockNode(node) {
return (isTmplAstIfBlock(node) ||
isTmplAstForLoopBlock(node) ||
isTmplAstDeferredBlock(node) ||
isTmplAstSwitchBlock(node) ||
isBlockWithChildren(node));
}
export function resolveBlockChildNodes(node) {
if (isTmplAstIfBlock(node)) {
return node.branches;
}
if (isTmplAstForLoopBlock(node)) {
return node.empty ? [...node.children, node.empty] : node.children;
}
if (isTmplAstDeferredBlock(node)) {
return [
...node.children,
...[node.loading, node.error, node.placeholder].filter(Boolean),
];
}
if (isTmplAstSwitchBlock(node)) {
return node.cases;
}
return node.children;
}
export function resolveKeysFromLiteralMap(node) {
let keys = [];
for (let i = 0; i < node.values.length; i++) {
const { key } = node.keys[i];
const value = node.values[i];
if (isLiteralMap(value)) {
const prefixedKeys = resolveKeysFromLiteralMap(value).map((k) => `${key}.${k}`);
keys = keys.concat(prefixedKeys);
}
else {
keys.push(key);
}
}
return keys;
}
//# sourceMappingURL=utils.js.map