Skip to content
Golang beautify data display for Humans
Go
Branch: master
Clone or download
Latest commit 794d7f2 Jun 10, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd update fmt tools Nov 13, 2018
examples update example Nov 6, 2018
.travis.yml Update .travis.yml Aug 30, 2018
LICENSE add LICENSE Apr 12, 2018
README.md update example Nov 6, 2018
README_cn.md update example Nov 6, 2018
align.go add comments Jul 20, 2018
align_test.go add comments Jul 20, 2018
builder.go Remove strings.Builder Aug 27, 2018
bytes_viewer.go fiexs bytes viewer Dec 3, 2018
bytes_viewer_test.go add bytes viewer Nov 6, 2018
fmt.go fixes the type name for p style Nov 29, 2018
fmt_row_test.go add test Aug 15, 2018
fmt_test.go add test Aug 15, 2018
format.go update comment Apr 12, 2018
format_test.go add test Jul 19, 2018
go.mod add go.mod Jun 10, 2019
misc.go update comment Apr 12, 2018
opt.go add test Jul 19, 2018
puts.go add smark Jun 12, 2018
sort.go fixes sort Aug 22, 2018
stack.go Optimization of mark Apr 18, 2019
stack_test.go add test Jul 19, 2018
table.go fixes sort Aug 22, 2018
table_test.go update test Aug 22, 2018

README.md

Golang beautify data display for Humans

Build Status Go Report Card GoDoc GitHub license cover.run

Install

# Stable version
go get -u -v gopkg.in/ffmt.v1

# Latest version
go get -u -v github.com/go-ffmt/ffmt

Usage

API Documentation

Examples

package main

import (
	ffmt "github.com/go-ffmt/ffmt"
)

func main() {
	example()
}

type mt struct {
	String string
	Int    int
	Slice  []int
	Map    map[string]interface{}
}

func example() {
	m := mt{
		"hello world",
		100,
		[]int{1, 2, 3, 4, 5, 6},
		map[string]interface{}{
			"A":  123,
			"BB": 456,
		},
	}

	fmt.Println(m) // fmt the default formatting.
	/*
		{hello world 100 [1 2 3 4 5 6] map[BB:456 A:123]}
	*/

	ffmt.Puts(m) // More friendly formatting.
	/*
		{
		 String: "hello world"
		 Int:    100
		 Slice:  [
		  1 2 3
		  4 5 6
		 ]
		 Map: {
		  "A":  123
		  "BB": 456
		 }
		}
	*/

	ffmt.Print(m) // Same "Puts" but String unadded '"'.
	/*
		{
		 String: hello world
		 Int:    100
		 Slice:  [
		  1 2 3
		  4 5 6
		 ]
		 Map: {
		  A:  123
		  BB: 456
		 }
		}
	*/

	ffmt.P(m) // Format data and types.
	/*
		main.mt{
		 String: string("hello world")
		 Int:    int(100)
		 Slice:  []int[
		  int(1) int(2) int(3)
		  int(4) int(5) int(6)
		 ]
		 Map: map[string]interface {}{
		  string("A"):  int(123)
		  string("BB"): int(456)
		 }
		}
	*/

	ffmt.Pjson(m) // Format it in json style.
	/*
		{
		 "Int": 100
		,"Map": {
		  "A":  123
		 ,"BB": 456
		 }
		,"Slice": [
		  1,2,3
		 ,4,5,6
		 ]
		,"String": "hello world"
		}
	*/

	m0 := ffmt.ToTable(m, m) // Break the fields into tables.
	ffmt.Puts(m0)
	/*
		[
		 [
		  "String" "Int"
		  "Slice"  "Map"
		 ]
		 [
		  "hello world"   "100"
		  "[1 2 3 4 5 6]" "map[A:123 BB:456]"
		 ]
		]
	*/

	m1 := ffmt.FmtTable(m0) // [][]string Table format.
	ffmt.Puts(m1)
	/*
		[
		 "String      Int Slice         Map               "
		 "hello world 100 [1 2 3 4 5 6] map[A:123 BB:456] "
		]
	*/

	ffmt.Mark("hello") // Mark position.
	/*
		main.go:124  hello
	*/

	ffmt.Print(ffmt.BytesViewer("Hello world! Hello All!"))
	/*
		| Address  | Hex                                             | Text             |
		| -------: | :---------------------------------------------- | :--------------- |
		| 00000000 | 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 20 48 65 6c | Hello world! Hel |
		| 00000010 | 6c 6f 20 41 6c 6c 21                            | lo All!          |
	*/
}

License

Pouch is licensed under the MIT License. See LICENSE for the full license text.

You can’t perform that action at this time.