@inlang/paraglide-js
Version:
[](https://www.npmjs.com/package/@inlang/paraglide-js) [/;
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