Skip to content

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

License

Notifications You must be signed in to change notification settings

rodabt/termtable

 
 

Repository files navigation

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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • V 97.9%
  • AMPL 2.1%