UNPKG

@formatjs/cli-lib

Version:
46 lines (45 loc) 1.52 kB
import { transform } from 'ember-template-recast'; 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(undefined, defaultMessage, desc, fileName); options.onMsgExtracted(fileName, [ { id: id, defaultMessage: defaultMessage, description: desc, }, ]); } } export function parseFile(source, fileName, options) { let visitor = function () { return { MustacheStatement(node) { extractText(node, fileName, options); }, SubExpression(node) { extractText(node, fileName, options); }, }; }; // SAFETY: ember-template-recast's types are out of date, // but it does not affect runtime transform(source, visitor); }