<% if type.program? %>
<%= type.full_name.gsub("::", "::") %>
<% else %>
<%= type.abstract? ? "abstract " : ""%><%= type.visibility.try(&.+(" ")) %><%= type.kind %>
<%= type.full_name.gsub("::", "::") %>
<% end %>
<% if type.superclass %>
<%= type.superclass_hierarchy %>
<% end %>
<% if doc = type.formatted_doc %>
<%= Crystal::Doc.anchor_link("overview") %> Overview
<%= doc %> <% end %> <% if type.alias? %><%= Crystal::Doc.anchor_link("alias-definition") %> Alias Definition
<%= type.formatted_alias_definition %>
<% end %>
<% if type.type_def? %>
<%= Crystal::Doc.anchor_link("type-definition") %> Type Definition
<%= type.formatted_type_definition %>
<% end %>
<%= OtherTypesTemplate.new("Included Modules", type, type.included_modules) %>
<%= OtherTypesTemplate.new("Extended Modules", type, type.extended_modules) %>
<%= OtherTypesTemplate.new("Direct Known Subclasses", type, type.subclasses) %>
<%= OtherTypesTemplate.new("Direct including types", type, type.including_types) %>
<% if locations = type.locations %>
<%= Crystal::Doc.anchor_link("defined-in") %> Defined in:
<% locations.each do |location| %> <% if url = project_info.source_url(location) %> <%= location.filename_in_project %><% if location.show_line_number %>:<%= location.line_number %><% end %> <% else %> <%= location.filename_in_project %><% if location.show_line_number %>:<%= location.line_number %><% end %> <% end %><% end %> <% end %> <% unless type.constants.empty? %> <% if type.enum? %>
<%= Crystal::Doc.anchor_link("enum-members") %> Enum Members
<% else %><%= Crystal::Doc.anchor_link("constant-summary") %> Constant Summary
<% end %>-
<% type.constants.each do |const| %>
-
<%= const.name %> =
<%= const.formatted_value %>
<% if doc = const.formatted_doc %>
- <%= doc %> <% end %> <% end %>
<% type.ancestors.each do |ancestor| %>
<%= MethodsInheritedTemplate.new(type, ancestor, ancestor.instance_methods, "Instance") %>
<%= MethodsInheritedTemplate.new(type, ancestor, ancestor.constructors, "Constructor") %>
<%= MethodsInheritedTemplate.new(type, ancestor, ancestor.class_methods, "Class") %>
<%= MacrosInheritedTemplate.new(type, ancestor, ancestor.macros) %>
<% end %>
<%= MethodDetailTemplate.new("Constructor Detail", type.constructors) %>
<%= MethodDetailTemplate.new(type.program? ? "Method Detail" : "Class Method Detail", type.class_methods) %>
<%= MethodDetailTemplate.new("Macro Detail", type.macros) %>
<%= MethodDetailTemplate.new("Instance Method Detail", type.instance_methods) %>
<% end %>