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:
16
src/lib/server/recipes/scaler.ts
Normal file
16
src/lib/server/recipes/scaler.ts
Normal 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)
|
||||
}));
|
||||
}
|
||||
Reference in New Issue
Block a user