/termtable

Simple and highly customizable library to display tables in the terminal.

Primary LanguageVMIT LicenseMIT

V Terminal Tables

CI

Simple and highly customizable library to display tables in the terminal.

Features

Installation

v install serkonda7.termtable

Usage

import serkonda7.termtable as tt

fn main() {
	data := [
		['Name', 'Age', 'Sex'],
		['Max', '13', 'male'],
		['Moritz', '12', 'male'],
		['Lisa', '42', 'female'],
	]
	t := tt.Table{
		data: data
		// The following settings are optional and have these defaults:
		style: .grid
		header_style: .bold
		align: .left
		orientation: .row
		padding: 1
		tabsize: 4
	}
	println(t)
}

Predefined Styles

Supported values for style: ... are:

  • .grid
  • .pretty
  • .plain
  • .simple
  • .fancy_grid
  • .md
  • .rst

.grid (default):

.pretty:

.plain:

.simple:

.fancy_grid:

.md follows the conventions of Markdown. It does not add alignment colons though:

.rst behaves like the reStructuredText simple table format:

Header Style

// header_style: ...
.bold (default) .plain

Alignment

// align: ...
| Max    | 13  | male   |  // .left (default)
|  Max   | 13  |  male  |  // .center
|    Max |  13 |   male |  // .right

Orientation

t := tt.Table{
	data: [
		['Name', 'Age'],
		['Max', '13'],
		['Moritz', '12'],
	]
	// orientation: ...
}
println(t)
.row (default) .column

Padding

Control the count of spaces between the cell border and the item.

// padding: ...
|   Lisa   |   42   |   female   |  // 3

| Lisa | 42 | female |  // 1 (default)

|Lisa|42|female|  // 0

Tabsize

t := tt.Table{
	data: [
		['\tName', 'Sex'],
		['1.\tMax', 'male\t'],
		['2. \tMoritz', '\tmale'],
	]
	// tabsize: ...
}
println(t)
4 (default) 2 8

Creating Custom Styles

To create a custom style set the tables style property to style: .custom and specify custom_style: tt.StyleConfig{...}.

StyleConfig Struct

topline      tt.Sepline{...}
headerline   tt.Sepline{...}
middleline   tt.Sepline{...}
bottomline   tt.Sepline{...}
colsep       string
fill_padding bool = true

Sepline Struct

left  string
right string
cross string
sep   string

Acknowledgements

License

Licensed under the MIT License