class Mrtable::Table

Attributes

header_cols[R]
rows[R]

Public Class Methods

new(header_cols, rows) click to toggle source
# File lib/mrtable.rb, line 9
def initialize(header_cols, rows)
  @header_cols = header_cols
  @rows = rows
end

Public Instance Methods

calc_maxlens() click to toggle source
# File lib/mrtable.rb, line 33
def calc_maxlens
  num_cols = @rows[0].size
  maxlens = (0...num_cols).map do |ci|
    cols_at_ci = @rows.map { |cols| cols[ci] }
    if @header_cols
      cols_at_ci << @header_cols[ci]
    end
    cols_at_ci
      .map { |col| Mrtable.col_len(col) }
      .max
  end

  # compatibility for GFM
  min_len = 3
  maxlens.map { |len| [len, min_len].max }
end
complement(val) click to toggle source
# File lib/mrtable.rb, line 50
def complement(val)
  num_cols_max = [
    @header_cols.size,
    @rows.map { |cols| cols.size }.max
  ].max

  new_header_cols = Mrtable.complement_cols(
    @header_cols, num_cols_max, val)

  new_rows = @rows.map { |cols|
    Mrtable.complement_cols(cols, num_cols_max, val)
  }

  Table.new new_header_cols, new_rows
end
map_col_with_ci() { |col, ci| ... } click to toggle source

ci: column index @return new table

# File lib/mrtable.rb, line 16
def map_col_with_ci
  new_rows = @rows.map do |cols|
    new_cols = []
    cols.each_with_index { |col, ci|
      new_cols << yield(col, ci)
    }
    new_cols
  end

  new_header_cols = []
  @header_cols.each_with_index { |col, ci|
    new_header_cols << yield(col, ci)
  }

  Table.new new_header_cols, new_rows
end