class RTables::Table::MonoTable

Public Instance Methods

max_content_length() click to toggle source
# File lib/rtables/tables/monotable.rb, line 43
def max_content_length
  max_len = 0

  @table_content.each do |contents|
    contents.each do |content|
      len = content.length
      max_len = len if max_len < len
    end
  end

  max_len
end
max_header_length() click to toggle source
# File lib/rtables/tables/monotable.rb, line 56
def max_header_length
  max_len = 0

  @table_header.each do |head|
    len = head.length
    max_len = len if max_len < len
  end

  max_len
end
pad_content(content, clen) click to toggle source
# File lib/rtables/tables/monotable.rb, line 37
def pad_content(content, clen)
  spacing = clen - content.length

  content + (' ' * spacing)
end
pad_header(header, hlen) click to toggle source
# File lib/rtables/tables/monotable.rb, line 31
def pad_header(header, hlen)
  spacing = hlen - header.length

  header + (' ' * spacing)
end
render() click to toggle source
# File lib/rtables/tables/monotable.rb, line 4
def render
  corner = '+'
  line_horizontal = '-'
  line_vertical = '|'

  hlen = max_header_length
  clen = max_content_length

  row_sep = "#{corner}#{line_horizontal * (hlen + 2)}#{corner}#{line_horizontal * (clen + 2)}#{corner}"
  line_fmt = "#{line_vertical} %{header} #{line_vertical} %{content} #{line_vertical}"
  lines = []
  i = 0

  lines << row_sep
  @table_content.each do |contents|
    contents.each do |content|
      lines << line_fmt % { header: pad_header(@table_header[i], hlen), content: pad_content(content, clen) }
      i += 1
    end

    i = 0
    lines << row_sep
  end

  lines
end