in packages/babel-plugin-fbt/src/getNamespacedArgs.js [100:130]
plural(node) {
const attributes = node.openingElement.attributes;
const options = getOptionsFromAttributes(
t,
attributes,
PluralOptions,
PluralRequiredAttributes,
);
const countAttr = getAttributeByNameOrThrow(attributes, 'count').value;
const children = filterEmptyNodes(node.children);
const pluralChildren = children.filter(function (child) {
return (
child.type === 'JSXText' || child.type === 'JSXExpressionContainer'
);
});
if (pluralChildren.length !== 1) {
throw errorAt(
node,
`${moduleName}:plural expects text or an expression, and only one`,
);
}
const singularNode = pluralChildren[0];
const singularText = expandStringConcat(
moduleName,
singularNode.expression || singularNode,
);
const singularArg = stringLiteral(
normalizeSpaces(singularText.value).trimRight(),
);
return [singularArg, countAttr.expression, options];
},