plural()

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];
    },