mirror of
https://gitee.com/rainbond/Rainbond.git
synced 2024-12-04 20:57:38 +08:00
104 lines
3.0 KiB
Markdown
104 lines
3.0 KiB
Markdown
# Termtables
|
|
|
|
[![Build Status](https://travis-ci.org/apcera/termtables.svg?branch=master)](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 main
|
|
|
|
import (
|
|
"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.
|