README

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.

Documentation

Index

Constants

View Source
const (
	CanDefaultString   option = 1 << (31 - iota) // can use .(fmt.Stringer)
	CanFilterDuplicate                           // Filter duplicates
	CanRowSpan                                   // Fold line
)

Formatted option

View Source
const (
	StyleP     style = iota + 1 // Display type and data
	StylePuts                   // Display data
	StylePrint                  // Display data; string without quotes
	StylePjson                  // The json style display; Do not show private
)

Formatted style

Variables

View Source
var Printf = fmt.Printf

Printf fmt.Printf

View Source
var Println = fmt.Println

Println fmt.Println

View Source
var Space byte = ' '

Space rune

Functions

func Align

func Align(a string) string

Align returns align structured strings

func D

func D(a ...interface{})

D for debug

func FmtTable

func FmtTable(b [][]string) (ss []string)

FmtTable Format table data

func Format

func Format(str string, data ...interface{}) string

Format Format("hello {name}", "ffmt") to "hello ffmt"

func Fp

func Fp(w io.Writer, a ...interface{}) (int, error)

Fp The go style friendly display types and data to writer

func Fpjson

func Fpjson(w io.Writer, a ...interface{}) (int, error)

Fpjson The json style friendly display to writer

func Fprint

func Fprint(w io.Writer, a ...interface{}) (int, error)

Fprint The go style friendly to writer

func Fputs

func Fputs(w io.Writer, a ...interface{}) (int, error)

Fputs The go style friendly to writer

func Mark

func Mark(a ...interface{})

Mark Output prefix current line position

func MarkStack

func MarkStack(skip int, a ...interface{})

MarkStack Output prefix stack line pos

func MarkStackFull

func MarkStackFull()

MarkStackFull Output stack full

func NewOptional

func NewOptional(depth int, b style, opt option) *optional

NewOptional ffmt optional

func P

func P(a ...interface{}) (int, error)

P The go style friendly display types and data

func Pjson

func Pjson(a ...interface{}) (int, error)

Pjson The json style friendly display

func Print

func Print(a ...interface{}) (int, error)

Print The go style friendly display

func Puts

func Puts(a ...interface{}) (int, error)

Puts The go style friendly display

func Sd

func Sd(a ...interface{}) string

Sd for debug

func Smark

func Smark(a ...interface{}) string

Smark returns Output prefix current line position

func SmarkStack

func SmarkStack(skip int, a ...interface{}) string

SmarkStack stack information

func SmarkStackFunc

func SmarkStackFunc(skip int, a ...interface{}) string

SmarkStackFunc stack information

func Sp

func Sp(a ...interface{}) string

Sp The go style friendly display types and data to string

func Spjson

func Spjson(a ...interface{}) string

Spjson The json style friendly display to string

func Sprint

func Sprint(a ...interface{}) string

Sprint The go style friendly to string

func Sputs

func Sputs(a ...interface{}) string

Sputs The go style friendly to string

func TableText

func TableText(b string, prefix, split string) string

TableText table text

func ToTable

func ToTable(t interface{}, is ...interface{}) [][]string

ToTable Data to table data

Types

type BytesViewer

type BytesViewer []byte

BytesViewer bytes viewer

func (BytesViewer) String

func (b BytesViewer) String() string

String returns view in hexadecimal

Directories

Path Synopsis
cmd