Sha256: 0740273dbac094cac8e43609315906ff39ebdc5ca72f26d1c4a965102f760e33

Contents?: true

Size: 1.59 KB

Versions: 20

Compression:

Stored size: 1.59 KB

Contents

module Asciidoctor
  module ISO
    module Table
      def table_attrs(node)
        { id: Utils::anchor_or_uuid(node),
          headerrows: node.attr("headerrows") }
      end

      def table(node)
        @table_fn_number = "a"
        noko do |xml|
          xml.table **attr_code(table_attrs(node)) do |xml_table|
            table_name(node, xml_table)
            %i(head body foot).reject do |tblsec|
              node.rows[tblsec].empty?
            end
            table_head_body_and_foot node, xml_table
          end
        end
      end

      private

      def table_name(node, xml_table)
        if node.title?
          xml_table.name node.title
        end
      end

      def table_cell1(cell, thd)
        if cell.style == :asciidoc
          thd << cell.content
        else
          thd << cell.text
        end
      end

      def table_cell(c, xml_tr, tblsec)
        cell_attributes = { id: c.id, colspan: c.colspan,
                            rowspan: c.rowspan, align: c.attr("halign") }
        cell_tag = "td"
        cell_tag = "th" if tblsec == :head || c.style == :header
        xml_tr.send cell_tag, **attr_code(cell_attributes) do |thd|
          table_cell1(c, thd)
        end
      end

      def table_head_body_and_foot(node, xml)
        %i(head body foot).reject { |s| node.rows[s].empty? }.each do |s|
          xml.send "t#{s}" do |xml_tblsec|
            node.rows[s].each do |row|
              xml_tblsec.tr do |xml_tr|
                row.each { |cell| table_cell(cell, xml_tr, s) }
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
asciidoctor-iso-0.10.1 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.10.0 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.9.9 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.9.7 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.9.6 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.9.5 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.9.3 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.9.1 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.9.0 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.8.1 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.8.0 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.9 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.8 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.7 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.6 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.5 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.4 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.3 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.2 lib/asciidoctor/iso/table.rb
asciidoctor-iso-0.7.1 lib/asciidoctor/iso/table.rb