| """Centralized egg timing logic for the egg timer app.""" |
|
|
| from __future__ import annotations |
|
|
| from typing import Dict |
|
|
|
|
| |
| DONENESS_BASE_SECONDS: Dict[str, int] = { |
| "流心": 6.5 * 60, |
| "8成熟": int(7 * 60), |
| "全熟": int(10.5 * 60), |
| } |
|
|
| |
| SECONDS_PER_EXTRA_EGG = 10 |
|
|
|
|
| def calculate_cook_seconds(egg_count: int, doneness: str) -> int: |
| """Return total cook time in seconds based on eggs and doneness.""" |
| if egg_count < 1: |
| raise ValueError("egg_count must be at least 1") |
|
|
| if doneness not in DONENESS_BASE_SECONDS: |
| valid = ", ".join(DONENESS_BASE_SECONDS.keys()) |
| raise ValueError(f"doneness must be one of: {valid}") |
|
|
| base_seconds = DONENESS_BASE_SECONDS[doneness] |
| extra_eggs = max(0, egg_count - 1) |
| adjustment = extra_eggs * SECONDS_PER_EXTRA_EGG |
| return base_seconds + adjustment |
|
|
|
|
| def format_mm_ss(total_seconds: int) -> str: |
| """Format seconds as MM:SS string.""" |
| if total_seconds < 0: |
| total_seconds = 0 |
| minutes, seconds = divmod(int(total_seconds), 60) |
| return f"{minutes:02d}:{seconds:02d}" |
|
|