docs: function gfmTable (data, options) {
    options = options || {}
  
    if (!data || !data.length) {
      return ''
    }
  
    data = escapePipes(data)
  
    var tableOptions = {
      nowrap: !options.wrap,
      padding: { left: '| ', right: ' ' },
      columns: options.columns || [],
      getColumn: function (columnName) {
        return this.columns.find(function (column) {
          return columnName === column.name
        })
      },
      ignoreEmptyColumns: options.ignoreEmptyColumns
    }
  
    if (options.width) tableOptions.viewWidth = options.width
  
    var headerRow = {}
    var separatorRow = {}
  
    var table = new Table(data, tableOptions)
  
    table.columns.list
      .forEach(function (column) {
        var optionColumn = tableOptions.getColumn(column.name)
        headerRow[column.name] = (optionColumn && optionColumn.header) || column.name
        separatorRow[column.name] = function () {
          return '-'.repeat(this.wrappedContentWidth)
        }
      })
  
    data.splice(0, 0, headerRow, separatorRow)
    table.load(data)
  
    var lastColumn = table.columns.list[table.columns.list.length - 1]
    lastColumn.padding = { left: '| ', right: ' |' }
  
    return table.toString()
  }