lib/asciidoctor/render_templates.rb



class BaseTemplate
  def initialize
  end

  def self.inherited(klass)
    @template_classes ||= []
    @template_classes << klass
  end

  def self.template_classes
    @template_classes
  end

  # We're ignoring locals for now. Shut up.
  def render(obj = Object.new, locals = {})
    output = template.result(obj.instance_eval {binding})
  end

  def template
    raise "You chilluns need to make your own template"
  end
end

class DocumentTemplate < BaseTemplate
  def template
    @template ||= ::ERB.new <<-EOF
      <div class='man-page'>
      <div id='header'>
        <% if header %>
          <h1><%= header.name %></h1>
          <div class='sectionbody'><%= header.content %></div>
        <% elsif preamble %>
          <div class=preamble'>
            <div class='sectionbody'>
              <%= preamble.content %>
            </div>
          </div>
        <% end %>
      </div>

      <%= content %>

    </div>
    EOF
  end
end

class SectionTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='sect<%= level %>'>
        <% if !anchor.nil? %>
          <a name='<%= anchor %>'></a>
        <% end %>
        <h<%= level + 1 %> id='<%= section_id %>'><%= name %></h<%= level + 1 %>>
        <% if level == 1 %>
          <div class='sectionbody'><%= content %></div>
        <% else %>
          <%= content %>
        <% end %>
      </div>
    EOF
  end
end

class SectionAnchorTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <a name='<%= content %>'></a>
    EOF
  end
end

class SectionDlistTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='dlist'>
        <dl>
          <% content.each do |dt, dd| %>
            <dt class='hdlist1'><%= dt %></dt>
            <% unless dd.nil? || dd.empty? %>
              <dd><%= dd %></dd>
            <% end %>
          <% end %>
        </dl>
      </div>
    EOF
  end
end

class SectionListingTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='listingblock'>
        <div class='content'>
          <div class='highlight'>
            <pre><%= content %></pre>
          </div>
        </div>
      </div>
    EOF
  end
end

class SectionLiteralTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='literalblock'>
        <div class='content'>
          <pre><tt><%= content %></tt></pre>
        </div>
      </div>
    EOF
  end
end

class SectionNoteTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='admonitionblock'>
        <table>
          <tr>
            <td class='icon'></td>
            <td class='content'>
              <% if !title.nil? %>
                <div class='title'><%= title %></div>
              <% end %>
              <%= content %>
            </td>
          </tr>
        </table>
      </div>
    EOF
  end
end

class SectionParagraphTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='paragraph'>
        <% if !title.nil? %>
          <div class='title'><%= title %></div>
        <% end %>
        <p><%= content %></p>
      </div>
    EOF
  end
end

class SectionSidebarTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='sidebarblock'>
        <div class='content'>
          <p><%= content %></p>
        </div>
      </div>
    EOF
  end
end

class SectionUlistTemplate < BaseTemplate
  def template
    @template ||= ERB.new <<-EOF
      <div class='ulist'>
        <ul>
        <% content.each do |li| %>
          <%= li %>
        <% end %>
        </ul>
      </div>
    EOF
  end
end

=begin
../gitscm-next/templates/section_colist.html.erb
<div class='colist arabic'>
  <ol>
    <% content.each do |li| %>
      <li><p><%= li %></p></li>
    <% end %>
  </ol>
</div>
../gitscm-next/templates/section_example.html.erb
<div class='exampleblock'>
  <div class='content'>
    <div class='literalblock'>
      <div class='content'>
        <pre><tt><%= content %></tt></pre>
      </div>
    </div>
  </div>
</div>
../gitscm-next/templates/section_oblock.html.erb
<div class='openblock'>
  <div class='content'>
    <%= content %>
  </div>
</div>
../gitscm-next/templates/section_olist.html.erb
<div class='olist arabic'>
  <ol class='arabic'>
    <% content.each do |li| %>
      <li><p><%= li %></p></li>
    <% end %>
  </ol>
</div>
../gitscm-next/templates/section_quote.html.erb
<div class='quoteblock'>
  <div class='content'>
    <%= content %>
  </div>
</div>
../gitscm-next/templates/section_verse.html.erb
<div class='verseblock'>
  <pre class='content'><%= content %></pre>
</div>
=end