Spaces:
Sleeping
Sleeping
| """UI helper functions for data formatting and display.""" | |
| import re | |
| def prefer_language(value: str | dict | None, lang_code: str) -> str | None: | |
| """Return the value for the requested language with sensible fallbacks.""" | |
| if isinstance(value, str): | |
| return value or None | |
| if not isinstance(value, dict): | |
| return None | |
| order = [lang_code, "de", "fr", "it", "rm", "en"] | |
| for code in order: | |
| text = value.get(code) | |
| if text: | |
| return text | |
| for text in value.values(): | |
| if text: | |
| return text | |
| return None | |
| def strip_html(text: str) -> str: | |
| """Remove HTML tags and collapse whitespace for short summaries.""" | |
| if not text: | |
| return "" | |
| cleaned = re.sub(r"<[^>]+>", " ", text) | |
| cleaned = re.sub(r"\s+", " ", cleaned).strip() | |
| return cleaned | |
| def pick_external_url(*candidates) -> str | None: | |
| """Return the first non-empty external URL.""" | |
| for candidate in candidates: | |
| if not candidate: | |
| continue | |
| if isinstance(candidate, dict): | |
| # Prefer German, fall back to any available language | |
| url = prefer_language(candidate, "de") or prefer_language(candidate, "fr") or prefer_language(candidate, "it") | |
| if url: | |
| return url | |
| elif isinstance(candidate, str) and candidate.strip(): | |
| return candidate.strip() | |
| return None | |