summary refs log tree commit diff stats
path: root/compiler/asciitables.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/asciitables.nim')
-rw-r--r--compiler/asciitables.nim83
1 files changed, 0 insertions, 83 deletions
diff --git a/compiler/asciitables.nim b/compiler/asciitables.nim
deleted file mode 100644
index 39bb26a5c..000000000
--- a/compiler/asciitables.nim
+++ /dev/null
@@ -1,83 +0,0 @@
-#[
-move to std/asciitables.nim once stable, or to a nimble paackage
-once compiler can depend on nimble
-]#
-
-type Cell* = object
-  text*: string
-  width*, row*, col*, ncols*, nrows*: int
-
-iterator parseTableCells*(s: string, delim = '\t'): Cell =
-  ## iterates over all cells in a `delim`-delimited `s`, after a 1st
-  ## pass that computes number of rows, columns, and width of each column.
-  var widths: seq[int]
-  var cell: Cell
-  template update() =
-    if widths.len<=cell.col:
-      widths.setLen cell.col+1
-      widths[cell.col] = cell.width
-    else:
-      widths[cell.col] = max(widths[cell.col], cell.width)
-    cell.width = 0
-
-  for a in s:
-    case a
-    of '\n':
-      update()
-      cell.col = 0
-      cell.row.inc
-    elif a == delim:
-      update()
-      cell.col.inc
-    else:
-      # todo: consider multi-width chars when porting to non-ascii implementation
-      cell.width.inc
-  if s.len > 0 and s[^1] != '\n':
-    update()
-
-  cell.ncols = widths.len
-  cell.nrows = cell.row + 1
-  cell.row = 0
-  cell.col = 0
-  cell.width = 0
-
-  template update2() =
-    cell.width = widths[cell.col]
-    yield cell
-    cell.text = ""
-    cell.width = 0
-    cell.col.inc
-
-  template finishRow() =
-    for col in cell.col..<cell.ncols:
-      cell.col = col
-      update2()
-    cell.col = 0
-
-  for a in s:
-    case a
-    of '\n':
-      finishRow()
-      cell.row.inc
-    elif a == delim:
-      update2()
-    else:
-      cell.width.inc
-      cell.text.add a
-
-  if s.len > 0 and s[^1] != '\n':
-    finishRow()
-
-proc alignTable*(s: string, delim = '\t', fill = ' ', sep = " "): string =
-  ## formats a `delim`-delimited `s` representing a table; each cell is aligned
-  ## to a width that's computed for each column; consecutive columns are
-  ## delimited by `sep`, and alignment space is filled using `fill`.
-  ## More customized formatting can be done by calling `parseTableCells` directly.
-  for cell in parseTableCells(s, delim):
-    result.add cell.text
-    for i in cell.text.len..<cell.width:
-      result.add fill
-    if cell.col < cell.ncols-1:
-      result.add sep
-    if cell.col == cell.ncols-1 and cell.row < cell.nrows - 1:
-      result.add '\n'