{% macro render_node(node) %}
{{ NODE_ICONS.get(node.node_type, '') }}
{{ node.name }}
{{ node.node_type }}
{{ node.line_count }} lines
{% if node.node_type in ('function', 'method') and node.start_line and node.end_line %}
L{{ node.start_line }}–{{ node.end_line }}
{% endif %} {% if node.quality == 'warning' %}
🔴
{% elif node.quality == 'complex' %}
🟡
{% else %}
🟢
{% endif %} {% if node.warnings %}
{{ node.warnings | join('; ') }}
{% endif %}
{% if node.imports %}
IMPORTS
{% for imp in node.imports %}
→ {{ imp }}
{% endfor %}
{% endif %} {% if node.summary %}
{{ node.summary }}
{% elif node.node_type != 'directory' %}
AI summary pending...
{% endif %} {% if node.pseudocode and node.node_type in ('function', 'method') %}
PSEUDOCODE
{{ node.pseudocode }}
{% endif %} {% if node.warnings %}
{% for w in node.warnings %}
⚠️ {{ w }}
{% endfor %}
{% endif %} {% if node.node_type != 'directory' and node.source %}
Show Code
Export Code
Copy for AI
{{ node.source }}
{% endif %} {% if node.children %}
{% for child in node.children %} {{ render_node(child) }} {% endfor %}
{% endif %}
{% endmacro %}
codedocent
{{ root.filepath or root.name }}
{{ render_node(root) }}