https://github.com/brettski/go-termtables
Easily build tables in your command line applications
https://github.com/brettski/go-termtables
cli command-line golang tables
Last synced: 5 months ago
JSON representation
Easily build tables in your command line applications
- Host: GitHub
- URL: https://github.com/brettski/go-termtables
- Owner: brettski
- License: apache-2.0
- Created: 2019-08-17T15:38:10.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-19T14:24:36.000Z (10 months ago)
- Last Synced: 2025-04-02T19:47:00.652Z (6 months ago)
- Topics: cli, command-line, golang, tables
- Language: Go
- Homepage: https://github.com/brettski/go-termtables
- Size: 148 KB
- Stars: 8
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README-apcera.md
- License: LICENSE
Awesome Lists containing this project
README
_This repository was restored [here](https://github.com/brettski/go-termtables) after Apcera deleted their termtables repository on github. I was using the library on a project of mine and wanted to keep it around._
# Original Content (working on updating)
---
# Termtables
[](https://travis-ci.org/apcera/termtables)
A [Go](http://golang.org) port of the Ruby library [terminal-tables](https://github.com/visionmedia/terminal-table) for
fast and simple ASCII table generation.## Installation
```bash
go get github.com/apcera/termtables
```## Go Style Documentation
[http://godoc.org/github.com/apcera/termtables](http://godoc.org/github.com/apcera/termtables)
## APC Command Line usage
`--markdown` — output a markdown table, e.g. `apc app list --markdown`
`--html` — output an html table, e.g. `apc app list --html`
`--ascii` — output an ascii table, e.g. `apc app list --ascii`
## Basic Usage
```go
package mainimport (
"fmt"
"github.com/apcera/termtables"
)func main() {
table := termtables.CreateTable()table.AddHeaders("Name", "Age")
table.AddRow("John", "30")
table.AddRow("Sam", 18)
table.AddRow("Julie", 20.14)fmt.Println(table.Render())
}
```Result:
```
+-------+-------+
| Name | Age |
+-------+-------+
| John | 30 |
| Sam | 18 |
| Julie | 20.14 |
+-------+-------+
```## Advanced Usage
The package function-call `EnableUTF8()` will cause any tables created after
that point to use Unicode box-drawing characters for the table lines.Calling `EnableUTF8PerLocale()` uses the C library's locale functionality to
determine if the current locale environment variables say that the current
character map is UTF-8. If, and only if, so, then `EnableUTF8()` will be
called.Calling `SetModeHTML(true)` will cause any tables created after that point
to be emitted in HTML, while `SetModeMarkdown(true)` will trigger Markdown.
Neither should result in changes to later API to get the different results;
the primary intended use-case is extracting the same table, but for
documentation.The table method `.AddSeparator()` inserts a rule line in the output. This
only applies in normal terminal output mode.The table method `.AddTitle()` adds a title to the table; in terminal output,
this is an initial row; in HTML, it's a caption. In Markdown, it's a line of
text before the table, prefixed by `Table: `.The table method `.SetAlign()` takes an alignment and a column number
(indexing starts at 1) and changes all _current_ cells in that column to have
the given alignment. It does not change the alignment of cells added to the
table after this call. Alignment is only stored on a per-cell basis.## Known Issues
Normal output:
* `.SetAlign()` does not affect headers.
Markdown output mode:
* When emitting Markdown, the column markers are not re-flowed if a vertical
bar is an element of a cell, causing an escape to take place; since Markdown
is often converted to HTML, this only affects text viewing.
* A title in Markdown is not escaped against all possible forms of Markdown
markup (to avoid adding a dependency upon a Markdown library, as supported
syntax can vary).
* Markdown requires headers, so a dummy header will be inserted if needed.
* Table alignment is not reflected in Markdown output.