feat(scaler): add ingredient scaling with sensible rounding

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-17 15:02:09 +02:00
parent ae774e377d
commit 789af122f4
2 changed files with 59 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
import type { Ingredient } from '$lib/types';
export function roundQuantity(q: number): number {
if (q === 0) return 0;
if (q < 1) return Math.round(q * 100) / 100;
if (q < 10) return Math.round(q * 10) / 10;
return Math.round(q);
}
export function scaleIngredients(ings: Ingredient[], factor: number): Ingredient[] {
if (factor <= 0) throw new Error('factor must be positive');
return ings.map((i) => ({
...i,
quantity: i.quantity === null ? null : roundQuantity(i.quantity * factor)
}));
}