"""
Formatting utilities for display components
"""
import re
from typing import List, Dict, Any, Optional
from datetime import datetime, timezone
def format_score(score: float, precision: int = 3) -> str:
"""Format a score with specified precision"""
if isinstance(score, (int, float)):
return f"{score:.{precision}f}"
return str(score)
def format_percentage(score: float, precision: int = 1) -> str:
"""Format a score as percentage"""
if isinstance(score, (int, float)):
return f"{score * 100:.{precision}f}%"
return str(score)
def format_model_name(name: str) -> str:
"""Format model name for display"""
# Remove common prefixes and make more readable
name = name.strip()
if "/" in name:
org, model = name.split("/", 1)
return f"{org}/{model}"
return f"{name}"
def format_timestamp(timestamp: str) -> str:
"""Format timestamp for display"""
try:
dt = datetime.fromisoformat(timestamp.replace("Z", "+00:00"))
return dt.strftime("%Y-%m-%d %H:%M UTC")
except:
return timestamp
def format_ip_address(ip: str) -> str:
"""Format IP address for display (partial masking)"""
if not ip:
return "Unknown"
# Mask part of IP for privacy
parts = ip.split(".")
if len(parts) == 4:
return f"{parts[0]}.{parts[1]}.{parts[2]}.xxx"
return "xxx.xxx.xxx.xxx"
def format_metric_score(score: int, metric_name: str) -> str:
"""Format metric score with color coding"""
if not isinstance(score, (int, float)):
return str(score)
# Color coding based on score
if score >= 8:
color = "#28a745" # Green
elif score >= 6:
color = "#ffc107" # Yellow
elif score >= 4:
color = "#fd7e14" # Orange
else:
color = "#dc3545" # Red
return f"{score}"
def format_language_badge(language: str) -> str:
"""Format programming language as a badge"""
if not language or language == "All":
return language
# Language-specific colors
colors = {
"Python": "#3776ab",
"JavaScript": "#f7df1e",
"Java": "#ed8b00",
"C++": "#00599c",
"C#": "#239120",
"Go": "#00add8",
"Rust": "#ce422b",
"TypeScript": "#3178c6",
"PHP": "#777bb4",
"Ruby": "#cc342d",
"Swift": "#fa7343",
"Kotlin": "#7f52ff",
"Scala": "#dc322f",
"R": "#276dc3",
"MATLAB": "#e16737"
}
color = colors.get(language, "#6c757d")
return f"{language}"
def format_taxonomy_badge(category: str) -> str:
"""Format taxonomy category as a badge"""
if not category or category == "All":
return category
# Category-specific colors
colors = {
"Bug Detection": "#dc3545",
"Code Style": "#6f42c1",
"Performance": "#fd7e14",
"Security": "#e83e8c",
"Maintainability": "#20c997",
"Documentation": "#17a2b8",
"Testing": "#28a745",
"Architecture": "#6c757d",
"Best Practices": "#007bff",
"Refactoring": "#ffc107"
}
color = colors.get(category, "#6c757d")
return f"{category}"
def format_comment_language_flag(language: str) -> str:
"""Format comment language with flag emoji"""
if not language or language == "All":
return language
# Language-specific flags
flags = {
"English": "🇺🇸",
"Chinese": "🇨🇳",
"Spanish": "🇪🇸",
"French": "🇫🇷",
"German": "🇩🇪",
"Japanese": "🇯🇵",
"Korean": "🇰🇷",
"Russian": "🇷🇺",
"Portuguese": "🇵🇹",
"Italian": "🇮🇹",
"Dutch": "🇳🇱"
}
flag = flags.get(language, "🌐")
return f"{flag} {language}"
def sanitize_html(text: str) -> str:
"""Sanitize HTML content to prevent XSS"""
if not isinstance(text, str):
return str(text)
# Remove potentially dangerous HTML tags
text = re.sub(r'', '', text, flags=re.DOTALL | re.IGNORECASE)
text = re.sub(r'', '', text, flags=re.DOTALL | re.IGNORECASE)
text = re.sub(r'on\w+="[^"]*"', '', text, flags=re.IGNORECASE)
text = re.sub(r'on\w+=\'[^\']*\'', '', text, flags=re.IGNORECASE)
return text
def truncate_text(text: str, max_length: int = 50) -> str:
"""Truncate text with ellipsis"""
if not isinstance(text, str):
text = str(text)
if len(text) <= max_length:
return text
return text[:max_length-3] + "..."
def format_table_cell(value: Any, column_name: str) -> str:
"""Format table cell based on column type"""
if value is None:
return "N/A"
# Handle different column types
if column_name.lower() in ["bleu", "pass@1", "pass@5", "pass@10"]:
return format_percentage(value)
elif column_name.lower() == "model":
return format_model_name(str(value))
elif column_name.lower() == "programming language":
return format_language_badge(str(value))
elif column_name.lower() == "comment language":
return format_comment_language_flag(str(value))
elif column_name.lower() == "taxonomy":
return format_taxonomy_badge(str(value))
elif column_name.lower() in ["readability", "relevance", "explanation clarity",
"problem identification", "actionability", "completeness",
"specificity", "contextual adequacy", "consistency", "brevity"]:
return format_metric_score(value, column_name.lower())
else:
return sanitize_html(str(value))