")
+
+ # Generate hierarchical HTML structure
+ def render_class_level(class_data, level=0):
+ indent = " " * level
+ class_name = class_data.get('class_id', 'Unknown')
+ html = f"{indent}
\n"
+ html += f"{indent}
{class_name}\n"
+
+ # Add subclasses if they exist
+ subclasses = class_data.get('subclasses', [])
+ if subclasses:
+ html += f"{indent}
\n"
+ for subclass in subclasses:
+ html += render_class_level(subclass, level + 1)
+ html += f"{indent}
\n"
+
+ html += f"{indent}
\n"
+ return html
+
+ html_parts.append(render_class_level(hierarchy))
+ html_parts.append("
")
+
+ return "".join(html_parts)
+
+ except Exception as e:
+ return f"")
+
+ # Class header
+ html_parts.append(f"")
+
+ # Members section
+ members = class_data.get('members', [])
+ if members:
+ html_parts.append("
")
+ html_parts.append("
Members:
")
+ html_parts.append("
")
+ for member in members[:10]: # Limit display for sanitized view
+ member_name = self._sanitize_html(str(member))
+ html_parts.append(f"- {member_name}
")
+ if len(members) > 10:
+ html_parts.append(f"- ... and {len(members) - 10} more
")
+ html_parts.append("
")
+ html_parts.append("
")
+
+ # Frames section (simplified)
+ frames = class_data.get('frames', [])
+ if frames:
+ html_parts.append("
")
+ html_parts.append(f"
Frames ({len(frames)}):
")
+ html_parts.append("
")
+ for i, frame in enumerate(frames[:3]): # Show only first 3 frames
+ frame_desc = self._sanitize_html(frame.get('description', f'Frame {i+1}'))
+ html_parts.append(f"- {frame_desc}
")
+ if len(frames) > 3:
+ html_parts.append(f"- ... and {len(frames) - 3} more frames
")
+ html_parts.append("
")
+ html_parts.append("
")
+
+ html_parts.append("
")
+
+ return "".join(html_parts)
+
+ except Exception as e:
+ return f"