Categorygithub.com/tanishiking/jpp
modulepackage
0.0.6
Repository: https://github.com/tanishiking/jpp.git
Documentation: pkg.go.dev

# README

jpp

Build Status Codacy Badge

JSON Prettier Printer that occupies a minimal number of lines while pretty-printing given JSON, using prettier which is Go implementation of "Wadler's "A Prettier Printer".

jpp is quite useful when we want to pretty print the JSON whose each node has a lot of children scalar values.

screenshot from 2018-10-28 16-57-16 This example.json cites from https://json.org/example.html

Instalation

Homebrew

$ brew install tanishiking/jpp/jpp

Download binary from GitHub Releases

https://github.com/tanishiking/jpp/releases

Build from source

$ go get -u github.com/tanishiking/jpp/cmd/jpp

Develop

$ make build # build binary into ./bin/jpp
$ make test # run all unit tests

jpp command

Options

  • -w: width (default: your terminal width)
    • Note that this command does not guarantee there are no lines longer than width
    • It just attempts to keep lines within this length when possible.
  • -i: indent string (default: ' ')

Environment Variables

We can specify the color of output string using following environment variables

  • JPP_NULL
  • JPP_BOOL
  • JPP_NUMBER
  • JPP_STRING
  • JPP_FIELDNAME

and builtin colors:

  • black
  • red
  • green
  • brown
  • blue
  • magenta
  • cyan
  • gray
  • bold_black
  • bold_red
  • bold_green
  • bold_brown
  • bold_blue
  • bold_magenta
  • bold_cyan
  • bold_gray

For example, cat some.json | JPP_NUMBER=bold_red jpp. In addition, we can specify complicated styles using SGR code. See: https://en.wikipedia.org/wiki/ANSI_escape_code

$ go get -u github.com/tanishiking/jpp/cmd/jpp
$ cat numbers.json
[
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ],
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ],
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ]
]
$ cat numbers.json | jpp -w 20
[
  [
    1, 2, 3, 4, 5,
    6, 7, 8, 9, 10
  ],
  [
    1, 2, 3, 4, 5,
    6, 7, 8, 9, 10,
    11, 12, 13, 14,
    15
  ],
  [
    1, 2, 3, 4, 5,
    6, 7, 8, 9, 10,
    11, 12, 13, 14,
    15, 16, 17, 18,
    19, 20
  ]
]

Package Usage

import (
	"fmt"

	"github.com/tanishiking/jpp"
)

func main() {
	jsonStr := `
[
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ],
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ],
  [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ]
]
`
	res, _ := jpp.Pretty(jsonStr, "  ", 20, nil)
	fmt.Println(res)
	// [
	//   [
	//     1, 2, 3, 4, 5,
	//     6, 7, 8, 9, 10
	//   ],
	//   [
	//     1, 2, 3, 4, 5,
	//     6, 7, 8, 9, 10,
	//     11, 12, 13, 14,
	//     15
	//   ],
	//   [
	//     1, 2, 3, 4, 5,
	//     6, 7, 8, 9, 10,
	//     11, 12, 13, 14,
	//     15, 16, 17, 18,
	//     19, 20
	//   ]
	// ]
}

# Packages

No description provided by the author

# Functions

Black formats according to a format specifier and returns the resulting string colored by black.
Blue formats according to a format specifier and returns the resulting string colored by blue.
BoldBlack formats according to a format specifier and returns the resulting bold string colored by black.
BoldBlue formats according to a format specifier and returns the resulting bold string colored by blue.
BoldBrown formats according to a format specifier and returns the resulting bold string colored by brown.
BoldCyan formats according to a format specifier and returns the resulting bold string colored by cyan.
BoldGray formats according to a format specifier and returns the resulting bold string colored by gray.
BoldGreen formats according to a format specifier and returns the resulting bold string colored by green.
BoldMagenta formats according to a format specifier and returns the resulting bold string colored by magenta.
BoldRed formats according to a format specifier and returns the resulting bold string colored by red.
Brown formats according to a format specifier and returns the resulting string colored by brown.
Cyan formats according to a format specifier and returns the resulting string colored by cyan.
Gray formats according to a format specifier and returns the resulting string colored by gray.
Green formats according to a format specifier and returns the resulting string colored by green.
Magenta formats according to a format specifier and returns the resulting string colored by magenta.
NoColor formats according to a format specifier and returns the resulting string.
Pretty prettifies specified json string.
Red formats according to a format specifier and returns the resulting string colored by red.

# Variables

DefaultScheme is plain color scheme that doesn't specify any colors or SGRs.

# Structs

ColorScheme is used for specifying the output color or SGR using https://github.com/fatih/color.

# Type aliases

ColoredFormat formats according to a format specifier and returns the resulting string.