docs: def table(big_array):
      """Return a formatted table, generated from arrays representing columns.
      The function requires a 2-dimensional array, where each array is a column
      of the table. This will be used to generate a formatted table in string
      format. The number of items in each columns does not need to be consitent.
  
      >>> table([["Name", "abactel", "Bob"], ["User", "4b4c73l", ""]])
      '| Name    | User    |\\n| ------- | ------- |\\n| abactel | 4b4c73l |\\n| Bob     |         |'
  
      When displayed using `print`, this will appear:
          | Name    | User    |
          | ------- | ------- |
          | abactel | 4b4c73l |
          | Bob     |         |
      """
      number_of_columns = len(big_array)
      number_of_rows_in_column = [len(column) for column in big_array]
      max_cell_size = [len(max(column, key=len)) for column in big_array]
      table = []
  
      # title row
      row_array = [column[0] for column in big_array]
      table.append(table_row(row_array, pad=max_cell_size))
  
      # delimiter row
      row_array = []
      for column_number in range(number_of_columns):
          row_array.append("-" * max_cell_size[column_number])
      table.append(table_row(row_array, pad=max_cell_size))
  
      # body rows
      for row in range(1, max(number_of_rows_in_column)):
          row_array = []
          for column_number in range(number_of_columns):
              if number_of_rows_in_column[column_number] > row:
                  row_array.append(big_array[column_number][row])
              else:
                  row_array.append()
          table.append(table_row(row_array, pad=max_cell_size))
      return "\n".join(table)