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: A compiled Regexp to match a blank line
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 Hash mapping styles abbreviations to styles that can be applied to a table column or cell
Public: Get/Set the String caption (unused, necessary for compatibility w/ next_block)
Public: Get/Set the columns for this table
Public: Get/Set the Rows struct for this table (encapsulates head, foot and body rows)
# File lib/asciidoctor/table.rb, line 60 def initialize(parent, attributes) super(parent, :table) # QUESTION since caption is on block, should it go to AbstractBlock? @caption = nil @rows = Rows.new([], [], []) @columns = [] unless @attributes.has_key? 'tablepcwidth' # 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 end 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 87 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
Public: Get the rendered String content for this Block. If the block has child blocks, the content method should cause them to be rendered and returned as content that can be included in the parent block's template.
# File lib/asciidoctor/table.rb, line 132 def render Debug.debug { "Now attempting to render for table my own bad #{self}" } Debug.debug { "Parent is #{@parent}" } Debug.debug { "Renderer is #{renderer}" } @document.playback_attributes @attributes renderer.render('block_table', self) end