UNPKG

@inlang/paraglide-js

Version:

[![NPM Downloads](https://img.shields.io/npm/dw/%40inlang%2Fparaglide-js?logo=npm&logoColor=red&label=npm%20downloads)](https://www.npmjs.com/package/@inlang/paraglide-js) [![GitHub Issues](https://img.shields.io/github/issues-closed/opral/paraglide-js?lo

42 lines 1.59 kB
const UNSUPPORTED_NUMERIC_MATCH_PREFIX = /^(0[bBoOxX]|NaN$)/; const INFINITY_MATCH_LITERAL = /^[+]?Infinity$/; export function renderInputMatchCondition(inputExpression, literalValue) { const numericLiteral = parseNumericMatchLiteral(literalValue); if (numericLiteral === undefined) { return `${inputExpression} === ${JSON.stringify(literalValue)}`; } return `(${inputExpression} === ${numericLiteral} || ${inputExpression} === ${JSON.stringify(literalValue)})`; } export function renderInputMatchTypeVariants(literalValue) { const numericLiteral = parseNumericMatchLiteral(literalValue); const variants = new Set(); if (numericLiteral !== undefined) { variants.add(numericLiteral === "Infinity" || numericLiteral === "-Infinity" ? "number" : numericLiteral); } variants.add(JSON.stringify(literalValue)); return Array.from(variants); } function parseNumericMatchLiteral(literalValue) { if (literalValue.length === 0 || literalValue.trim() !== literalValue || UNSUPPORTED_NUMERIC_MATCH_PREFIX.test(literalValue)) { return undefined; } if (INFINITY_MATCH_LITERAL.test(literalValue)) { return "Infinity"; } if (literalValue === "-Infinity") { return "-Infinity"; } const parsed = Number(literalValue); if (!Number.isFinite(parsed)) { return undefined; } if (Number.isInteger(parsed) && !Number.isSafeInteger(parsed)) { return undefined; } return String(parsed); } //# sourceMappingURL=match-literals.js.map