<body id="top" role="document" class="<%= klass.type %>">
<nav role="navigation">
  <div id="project-navigation">
    <%= render '_sidebar_navigation.rhtml' %>
    <%= render '_sidebar_search.rhtml' %>
  </div>

  <%= render '_sidebar_table_of_contents.rhtml' %>

  <div id="class-metadata">
    <%= render '_sidebar_sections.rhtml' %>
    <%= render '_sidebar_parent.rhtml' %>
    <%= render '_sidebar_includes.rhtml' %>
    <%= render '_sidebar_extends.rhtml' %>
    <%= render '_sidebar_methods.rhtml' %>
  </div>
</nav>

<main role="main" aria-labelledby="<%=h klass.aref %>">
  <h1 id="<%=h klass.aref %>" class="<%= klass.type %>">
    <%= klass.type %> <%= klass.full_name %>
  </h1>

  <section class="description">
    <%= klass.description %>
  </section>

  <% klass.each_section do |section, constants, attributes| %>
  <section id="<%= section.aref %>" class="documentation-section">
    <% if section.title then %>
    <header class="documentation-section-title">
      <h2>
        <%= section.title %>
      </h2>
      <span class="section-click-top">
        <a href="#top">&uarr; top</a>
      </span>
    </header>
    <% end %>

    <% if section.comment then %>
    <div>
      <%= section.description %>
    </div>
    <% end %>

    <% unless constants.empty? then %>
    <section class="constants-list">
      <header>
        <h3>Constants</h3>
      </header>
      <dl>
      <% constants.each do |const| %>
        <dt id="<%= const.name %>"><%= const.name %>
        <% if const.comment then %>
        <dd><%= const.description.strip %>
        <% else %>
        <dd class="missing-docs">(Not documented)
        <% end %>
      <% end %>
      </dl>
    </section>
    <% end %>

    <% unless attributes.empty? then %>
    <section class="attribute-method-details" class="method-section">
      <header>
        <h3>Attributes</h3>
      </header>

      <% attributes.each do |attrib| %>
      <div id="<%= attrib.aref %>" class="method-detail">
        <div class="method-heading attribute-method-heading">
          <span class="method-name"><%= h attrib.name %></span><span
            class="attribute-access-type">[<%= attrib.rw %>]</span>
        </div>

        <div class="method-description">
        <% if attrib.comment then %>
        <%= attrib.description.strip %>
        <% else %>
        <p class="missing-docs">(Not documented)
        <% end %>
        </div>
      </div>
      <% end %>
    </section>
    <% end %>

    <% klass.methods_by_type(section).each do |type, visibilities|
       next if visibilities.empty?
       visibilities.each do |visibility, methods|
         next if methods.empty? %>
     <section id="<%= visibility %>-<%= type %>-<%= section.aref %>-method-details" class="method-section">
       <header>
         <h3><%= visibility.to_s.capitalize %> <%= type.capitalize %> Methods</h3>
       </header>

    <% methods.each do |method| %>
      <div id="<%= method.aref %>" class="method-detail <%= method.is_alias_for ? "method-alias" : '' %>">
        <% if method.call_seq then %>
        <%   method.call_seq.strip.split("\n").each_with_index do |call_seq, i| %>
        <div class="method-heading">
          <span class="method-callseq">
            <%= h(call_seq.strip.
                  gsub( /^\w+\./m, '')).
                  gsub(/(.*)[-=]&gt;/, '\1&rarr;') %>
          </span>
          <% if i == 0 and method.token_stream then %>
          <span class="method-click-advice">click to toggle source</span>
          <% end %>
        </div>
        <%   end %>
        <% else %>
        <div class="method-heading">
          <span class="method-name"><%= h method.name %></span><span
            class="method-args"><%= h method.param_seq %></span>
          <% if method.token_stream then %>
          <span class="method-click-advice">click to toggle source</span>
          <% end %>
        </div>
        <% end %>

        <div class="method-description">
          <% if method.comment then %>
          <%= method.description.strip %>
          <% else %>
          <p class="missing-docs">(Not documented)
          <% end %>
          <% if method.calls_super then %>
            <div class="method-calls-super">
              Calls superclass method
              <%=
                  method.superclass_method ?
                  method.formatter.link(method.superclass_method.full_name, method.superclass_method.full_name) : nil
              %>
            </div>
          <% end %>

          <% if method.token_stream then %>
          <div class="method-source-code" id="<%= method.html_name %>-source">
            <pre><%= method.markup_code %></pre>
          </div>
          <% end %>
        </div>

        <% unless method.aliases.empty? then %>
        <div class="aliases">
          Also aliased as: <%= method.aliases.map do |aka|
            if aka.parent then # HACK lib/rexml/encodings
              %{<a href="#{klass.aref_to aka.path}">#{h aka.name}</a>}
            else
              h aka.name
            end
          end.join ", " %>
        </div>
        <% end %>

        <% if method.is_alias_for then %>
        <div class="aliases">
          Alias for: <a href="<%= klass.aref_to method.is_alias_for.path %>"><%= h method.is_alias_for.name %></a>
        </div>
        <% end %>
      </div>

    <% end %>
    </section>
  <% end
     end %>
  </section>
<% end %>
</main>
