class Csv2md

Attributes

input[R]

Public Class Methods

new(input) click to toggle source
# File lib/csv2md.rb, line 6
def initialize(input)
  @input = input
end

Public Instance Methods

csv() click to toggle source
# File lib/csv2md.rb, line 50
def csv
  result = input.split("\n").map do |line|
    row = line.scan(/\|([^\|]*)\s/).flatten.map(&:strip).join(",")
    row unless row.strip == ""
  end.compact.join("\n")
  result += "\n"
  result
end
find_column_widths() click to toggle source
# File lib/csv2md.rb, line 12
def find_column_widths
  parsed_csv.inject(Array.new(parsed_csv[0].length, 0)) do |result, line|
    line.each_with_index do |column, i|
      if column.to_s.length > result[i]
        result[i] = column.length
      end
    end

    result
  end
rescue
  raise UnableToParseCsv
end
gfm() click to toggle source
# File lib/csv2md.rb, line 26
def gfm
  result = ""
  widths = find_column_widths
  number_of_columns = widths.length

  parsed_csv.each_with_index do |line, row_index|
    line.each_with_index do |column, column_index|
      result += "| "
      result += column.to_s.ljust(widths[column_index] + 1, " ")
      if column_index == number_of_columns - 1
        result += "|\n"
      end
    end
    if row_index == 0
      widths.each do |width|
        result += "|".ljust(width + 3, "-")
      end
      result += "|\n"
    end
  end

  result
end

Private Instance Methods

parsed_csv() click to toggle source
# File lib/csv2md.rb, line 61
def parsed_csv
  @parsed_csv ||= CSV.parse(input)
end