UNPKG

@jsverse/transloco-keys-manager

Version:

Extract translatable keys from projects that uses Transloco

99 lines 3.58 kB
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