class Asciidoctor::HTML5::BlockTableTemplate

def template

def template
  @template ||= @eruby.new <<-EOS
#encoding:UTF-8%><table#{id} class="tableblock frame-<%= attr :frame, 'all' %> grid-<%= attr :grid, 'all'%>#{role_class}" style="<%
 !(attr? 'autowidth-option') %>width: <%= attr :tablepcwidth %>%; <% end %><%
 attr? :float %>float: <%= attr :float %>; <% end %>">
<% if title? %>
<caption class="title"><% unless @caption.nil? %><%= @caption %><% end %><%= title %></caption>
<% end %>
<% if (attr :rowcount) >= 0 %> 
<colgroup>
  <% if attr? 'autowidth-option' %>
  <% @columns.each do |col| %>
  <col>
  <% end %>
  <% else %>
  <% @columns.each do |col| %>
  <col style="width: <%= col.attr :colpcwidth %>%;">
  <% end %>
  <% end %>
</colgroup>
<% [:head, :foot, :body].select {|tsec| !rows[tsec].empty? }.each do |tsec| %>
<t<%= tsec %>>
  <% @rows[tsec].each do |row| %>
  <tr>
    <% row.each do |cell| %>
    <<%= tsec == :head ? 'th' : 'td' %> class="tableblock halign-<%= cell.attr :halign %> valign-<%= cell.attr :valign %>"#{attribute('colspan', 'cell.colspan')}#{attribute('rowspan', 'cell.rowspan')}><%
    if tsec == :head %><%= cell.text %><% else %><%
    case cell.attr(:style)
      when :asciidoc %><div><%= cell.content %></div><%
      when :verse %><div class="verse"><%= template.preserve_endlines(cell.text, self) %></div><%
      when :literal %><div class="literal monospaced"><pre><%= template.preserve_endlines(cell.text, self) %></pre></div><%
      when :header %><% cell.content.each do |text| %><p class="tableblock header"><%= text %></p><% end %><%
      else %><% cell.content.each do |text| %><p class="tableblock"><%= text %></p><% end %><%
    end %><% end %></<%= tsec == :head ? 'th' : 'td' %>>
    <% end %>
  </tr>
  <% end %>
</t<%= tsec %>>
<% end %>
<% end %>
table>
  EOS
end