Skip to content

Repository files navigation

table

Build StatusCoverage StatusGoDoc

Produces a string that represents slice of structs data in a text table, inspired by gajus/table.

Features:

  • No dependency.
  • Cell content aligned.
  • Column width self-adaptation
  • Support type of struct field: int, float, string, bool, slice, struct, map, time.Time and everything.
  • Support custom table header by declaring optional tag: table.(Thanks @skyfireitdiy)

Installation

$ go get github.com/modood/table

Quick start

package main
import (
"github.com/modood/table"
)
typeHousestruct {
Namestring`table:"Name"`SigilstringMottostring
}
funcmain() {
hs:= []House{
{"Stark", "direwolf", "Winter is coming"},
{"Targaryen", "dragon", "Fire and Blood"},
{"Lannister", "lion", "Hear Me Roar"},
}
// Output to stdouttable.Output(hs)
// Or just return table string and then do somethings:=table.Table(hs)
_=s
}

output:

┌───────────┬──────────┬──────────────────┐
│ Name │ Sigil │ Motto │
├───────────┼──────────┼──────────────────┤
│ Stark │ direwolf │ Winter is coming │
│ Targaryen │ dragon │ Fire and Blood │
│ Lannister │ lion │ Hear Me Roar │
└───────────┴──────────┴──────────────────┘

Document

  • func Output(slice interface{})

    formats slice of structs data and writes to standard output.(Using box drawing characters)

  • func OutputA(slice interface{})

    formats slice of structs data and writes to standard output.(Using standard ascii characters)

  • func Table(slice interface{}) string

    formats slice of structs data and returns the resulting string.(Using box drawing characters)

  • func AsciiTable(slice interface{}) string

    formats slice of structs data and returns the resulting string.(Using standard ascii characters)

  • compare box drawing characters with standard ascii characters

    box drawing:

    ┌───────────┬──────────┬──────────────────┐
    │ Name │ Sigil │ Motto │
    ├───────────┼──────────┼──────────────────┤
    │ Stark │ direwolf │ Winter is coming │
    │ Targaryen │ dragon │ Fire and Blood │
    │ Lannister │ lion │ Hear Me Roar │
    └───────────┴──────────┴──────────────────┘
    

    standard ascii:

    +-----------+----------+------------------+
    | Name | Sigil | Motto |
    +-----------+----------+------------------+
    | Stark | direwolf | Winter is coming |
    | Targaryen | dragon | Fire and Blood |
    | Lannister | lion | Hear Me Roar |
    +-----------+----------+------------------+
    

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

this repo is released under the MIT License.

About

Produces a string that represents slice data in a text table, inspired by gajus/table.

Topics

Resources

Stars

142 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages