Public: Methods and constants for managing AsciiDoc table content in a document. It supports all three of AsciiDoc's table formats: psv, dsv and csv.
Public: A Hash mapping alignment abbreviations to alignments (horizontal and vertial) that can be applies to a table column or cell
Public: An Array of String keys that represent the table formats in AsciiDoc
Public: A String key that specifies the default table format in AsciiDoc (psv)
Public: A Hash mapping the AsciiDoc table formats to their default delimiters
Public: A struct that encapsulates the collection of rows (head, foot, body) for a table
Public: A Hash mapping styles abbreviations to styles that can be applied to a table column or cell
Public: Get/Set the columns for this table
Public: Boolean specifies whether this table has a header row
Public: Get/Set the Rows struct for this table (encapsulates head, foot and body rows)
# File lib/asciidoctor/table.rb, line 57 def initialize(parent, attributes) super(parent, :table) @rows = Rows.new([], [], []) @columns = [] @has_header_option = attributes.has_key? 'header-option' # smell like we need a utility method here # to resolve an integer width from potential bogus input pcwidth = attributes['width'] pcwidth_intval = pcwidth.to_i.abs if pcwidth_intval == 0 && pcwidth != "0" || pcwidth_intval > 100 pcwidth_intval = 100 end @attributes['tablepcwidth'] = pcwidth_intval if @document.attributes.has_key? 'pagewidth' @attributes['tableabswidth'] ||= ((@attributes['tablepcwidth'].to_f / 100) * @document.attributes['pagewidth']).round end end
Internal: Creates the Column objects from the column spec
returns nothing
# File lib/asciidoctor/table.rb, line 88 def create_columns(col_specs) total_width = 0 @columns = col_specs.inject([]) {|collector, col_spec| total_width += col_spec['width'] collector << Column.new(self, collector.size, col_spec) collector } if !@columns.empty? @attributes['colcount'] = @columns.size even_width = (100.0 / @columns.size).floor @columns.each {|c| c.assign_width(total_width, even_width) } end nil end
Internal: Returns whether the current row being processed is the header row
# File lib/asciidoctor/table.rb, line 81 def header_row? @has_header_option && @rows.body.size == 0 end