const stripAnsi = require('strip-ansi')

module.exports = function normalizeOutput (rows, max) {
  function padEnd (string, maxLength, fillString) {
    while (stripAnsi(string).length < maxLength) {
      string = string + fillString
    }

    return string
  }

  var widths = []
  max = max || rows[0].length

  for (let i = 0; i < rows.length; i++) {
    for (let j = 0; j < rows[i].length && j < max; j++) {
      if (!widths[j] || widths[j] < stripAnsi(rows[i][j]).length) {
        widths[j] = stripAnsi(rows[i][j]).length
      }
    }
  }

  for (let i = 0; i < rows.length; i++) {
    for (let j = 0; j < rows[i].length && j < max; j++) {
      if (rows[i][j] === '-') {
        rows[i][j] = padEnd(rows[i][j], widths[j], '-')
      } else {
        rows[i][j] = padEnd(rows[i][j], widths[j], ' ')
      }
    }
  }

  return rows
}