""" Formatter utilities - clean and normalize messages. """ import re from typing import Optional from html import escape def clean_message(text: str, max_length: int = 4000) -> str: """ Clean and sanitize message text. - Remove excessive whitespace - Limit length - Escape HTML """ if not text: return "" # Strip leading/trailing whitespace text = text.strip() # Remove excessive internal whitespace (more than 2 spaces) text = re.sub(r' {2,}', ' ', text) # Remove excessive newlines (more than 2 consecutive) text = re.sub(r'\n{3,}', '\n\n', text) # Limit length if len(text) > max_length: text = text[:max_length] # Escape HTML to prevent XSS text = escape(text) return text def normalize_content(content: str) -> str: """Normalize message content for storage/search.""" # Lowercase for search indexing (optional) # Remove special characters for search (optional) return content.strip() def format_timestamp(timestamp) -> str: """Format a timestamp for display.""" from datetime import datetime if isinstance(timestamp, datetime): return timestamp.strftime("%Y-%m-%d %H:%M") return str(timestamp) def truncate_text(text: str, max_len: int = 50) -> str: """Truncate text for previews.""" if len(text) <= max_len: return text return text[:max_len - 3] + "..."