class Fastlane::MarkdownTableFormatter

Public Class Methods

new(string, header = true) click to toggle source

taken from: github.com/benbalter/markdown-table-formatter

# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 4
def initialize(string, header = true)
  @doc = string
  @header = header
end

Public Instance Methods

column_width(column) click to toggle source
# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 26
def column_width(column)
  width = 0
  table.each do |row|
    length = row[column].strip.length
    width = length if length > width
  end
  width
end
header_separator_row() click to toggle source
# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 43
def header_separator_row
  output = []
  [*0...table.first.length].each do |column|
    output.push(separator(column_width(column)))
  end
  output
end
pad(string, length) click to toggle source
# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 35
def pad(string, length)
  string.strip.ljust(length, ' ')
end
parse() click to toggle source

converts the markdown string into an array of arrays

# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 10
def parse
  @table = []
  rows = @doc.split(/\r?\n/)
  rows.each do |row|
    row_array = row.split("|")
    row_array.each(&:strip!)
    @table.push(row_array)
  end
  @table.delete_at(1) if @header # strip header separator
  @table
end
separator(length) click to toggle source
# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 39
def separator(length)
  "".ljust(length, '-')
end
table() click to toggle source
# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 22
def table
  @table ||= parse
end
to_md() click to toggle source
# File fastlane/lib/fastlane/markdown_table_formatter.rb, line 51
def to_md
  output = ""
  t = table.clone
  t.insert(1, header_separator_row) if @header
  t.each_with_index do |row, index|
    row.map!.with_index { |cell_row, index_row| pad(cell_row, column_width(index_row)) }
    output += "#{row.join(' | ').lstrip} |\n"
  end
  output
end