class Asciidoctor::HTML5::BlockDlistTemplate

Public Instance Methods

result(node) click to toggle source
# File lib/asciidoctor/backends/html5.rb, line 338
def result(node)
  result_buffer = []
  id_attribute = node.id ? %Q( id="#{node.id}") : nil

  case node.style
  when 'qanda'
    classes = ['qlist', node.style, node.role].compact
  when 'horizontal'
    classes = ['hdlist', node.role].compact
  else
    classes = ['dlist', node.style, node.role].compact
  end

  class_attribute = %Q( class="#{classes * ' '}")

  result_buffer << %Q(<div#{id_attribute}#{class_attribute}>)
  result_buffer << %Q(<div class="title">#{node.title}</div>) if node.title?
  case node.style
  when 'qanda'
    result_buffer << '<ol>'
    node.items.each do |terms, dd|
      result_buffer << '<li>'
      [*terms].each do |dt|
        result_buffer << %Q(<p><em>#{dt.text}</em></p>)
      end
      unless dd.nil?
        result_buffer << %Q(<p>#{dd.text}</p>) if dd.text?
        result_buffer << dd.content if dd.blocks?
      end
      result_buffer << '</li>'
    end
    result_buffer << '</ol>'
  when 'horizontal'
    result_buffer << '<table>'
    if (node.attr? 'labelwidth') || (node.attr? 'itemwidth')
      result_buffer << '<colgroup>'
      col_style_attribute = (node.attr? 'labelwidth') ? %Q( style="width:#{(node.attr 'labelwidth').chomp '%'}%;") : nil
      result_buffer << %Q(<col#{col_style_attribute}>)
      col_style_attribute = (node.attr? 'itemwidth') ? %Q( style="width:#{(node.attr 'itemwidth').chomp '%'}%;") : nil
      result_buffer << %Q(<col#{col_style_attribute}>)
      result_buffer << '</colgroup>'
    end
    node.items.each do |terms, dd|
      result_buffer << '<tr>'
      result_buffer << %Q(<td class="hdlist1#{(node.option? 'strong') ? ' strong' : nil}">)
      terms_array = [*terms]
      last_term = terms_array.last
      terms_array.each do |dt|
        result_buffer << dt.text
        result_buffer << '<br>' if dt != last_term
      end
      result_buffer << '</td>'
      result_buffer << '<td class="hdlist2">'
      unless dd.nil?
        result_buffer << %Q(<p>#{dd.text}</p>) if dd.text?
        result_buffer << dd.content if dd.blocks?
      end
      result_buffer << '</td>'
      result_buffer << '</tr>'
    end
    result_buffer << '</table>'
  else
    result_buffer << '<dl>'
    dt_style_attribute = node.style.nil? ? ' class="hdlist1"' : nil
    node.items.each do |terms, dd|
      [*terms].each do |dt|
        result_buffer << %Q(<dt#{dt_style_attribute}>#{dt.text}</dt>)
      end
      unless dd.nil?
        result_buffer << '<dd>'
        result_buffer << %Q(<p>#{dd.text}</p>) if dd.text?
        result_buffer << dd.content if dd.blocks?
        result_buffer << '</dd>'
      end
    end
    result_buffer << '</dl>'
  end

  result_buffer << '</div>'
  result_buffer * EOL
end
template() click to toggle source
# File lib/asciidoctor/backends/html5.rb, line 420
def template
  :invoke_result
end