| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- local M = {}
 
- local function max_len_line(lines)
 
-   local max_len = 0
 
-   for _, line in ipairs(lines) do
 
-     local line_len = line:len()
 
-     if line_len > max_len then
 
-       max_len = line_len
 
-     end
 
-   end
 
-   return max_len
 
- end
 
- --- Center align lines relatively to the parent container
 
- -- @param container The container where lines will be displayed
 
- -- @param lines The text to align
 
- -- @param alignment The alignment value, range: [0-1]
 
- function M.align(container, lines, alignment)
 
-   local max_len = max_len_line(lines)
 
-   local indent_amount = math.ceil(math.max(container.width - max_len, 0) * alignment)
 
-   return M.shift_left(lines, indent_amount)
 
- end
 
- --- Shift lines by a given amount
 
- -- @params lines The lines the shift
 
- -- @param amount The amount of spaces to add
 
- function M.shift_left(lines, amount)
 
-   local output = {}
 
-   local padding = string.rep(" ", amount)
 
-   for _, line in ipairs(lines) do
 
-     table.insert(output, padding .. line)
 
-   end
 
-   return output
 
- end
 
- --- Pretty format tables
 
- -- @param entries The table to format
 
- -- @param col_count The number of column to span the table on
 
- -- @param col_sep The separator between each colummn, default: " "
 
- function M.format_table(entries, col_count, col_sep)
 
-   col_sep = col_sep or " "
 
-   local col_rows = math.ceil(vim.tbl_count(entries) / col_count)
 
-   local cols = {}
 
-   local count = 0
 
-   for i, entry in ipairs(entries) do
 
-     if ((i - 1) % col_rows) == 0 then
 
-       table.insert(cols, {})
 
-       count = count + 1
 
-     end
 
-     table.insert(cols[count], entry)
 
-   end
 
-   local col_max_len = {}
 
-   for _, col in ipairs(cols) do
 
-     table.insert(col_max_len, max_len_line(col))
 
-   end
 
-   local output = {}
 
-   for i, col in ipairs(cols) do
 
-     for j, entry in ipairs(col) do
 
-       if not output[j] then
 
-         output[j] = entry
 
-       else
 
-         local padding = string.rep(" ", col_max_len[i - 1] - cols[i - 1][j]:len())
 
-         output[j] = output[j] .. padding .. col_sep .. entry
 
-       end
 
-     end
 
-   end
 
-   return output
 
- end
 
- return M
 
 
  |