"""Stays-specific formatting utilities."""
from typing import Dict, Any
from .common import format_currency
def format_markdown_accommodation(accommodation: Dict[str, Any]) -> str:
"""Format an accommodation object as readable markdown."""
lines = []
lines.append(f"## {accommodation.get('name', 'N/A')}")
lines.append(f"**ID**: `{accommodation.get('id', 'N/A')}`")
location = accommodation.get("location", {})
if location:
lines.append(f"**Location**: {location.get('city_name', 'N/A')}, {location.get('country_name', 'N/A')}")
lines.append(f"**Address**: {location.get('address', {}).get('line_one', 'N/A')}")
ratings = accommodation.get("ratings", [])
if ratings:
lines.append("**Ratings**:")
for rating in ratings[:3]: # Show top 3 ratings
source = rating.get("source", "N/A")
value = rating.get("value", "N/A")
out_of = rating.get("out_of", "N/A")
lines.append(f" - {source}: {value}/{out_of}")
amenities = accommodation.get("amenities", [])
if amenities:
amenity_names = [a.get("name", "") for a in amenities[:10]] # Show top 10
lines.append(f"**Amenities**: {', '.join(amenity_names)}")
lines.append("")
return "\n".join(lines)
def format_markdown_accommodation_rate(rate: Dict[str, Any]) -> str:
"""Format an accommodation rate as readable markdown."""
lines = []
# Room info
room = rate.get("room", {})
total_amount = rate.get("total_amount", "0")
total_currency = rate.get("total_currency", "USD")
lines.append(f"### {room.get('name', 'Room')} - {format_currency(total_amount, total_currency)}")
lines.append(f"**Rate ID**: `{rate.get('id', 'N/A')}`")
# Beds
beds = room.get("beds", [])
if beds:
bed_desc = ", ".join([f"{bed.get('count', 1)} {bed.get('type', 'bed')}" for bed in beds])
lines.append(f"**Beds**: {bed_desc}")
# Check-in/out
lines.append(f"**Check-in**: {rate.get('check_in_date', 'N/A')}")
lines.append(f"**Check-out**: {rate.get('check_out_date', 'N/A')}")
# Nights
nights = rate.get("nights", 0)
lines.append(f"**Nights**: {nights}")
# Cancellation
cancellation = rate.get("cancellation_timeline", {})
if cancellation:
lines.append(f"**Cancellation**: {cancellation.get('description', 'See policy')}")
lines.append("")
return "\n".join(lines)