Yj Versions Save

CLI - Convert between YAML, TOML, JSON, and HCL. Preserves map order.

v5.1.0

2 years ago

Changes

  • The -t flag now parses/emits TOML v1.0.0 instead of v1.0.0-rc.1.
  • Escaped quotes in TOML keys are now supported (#20).
  • The major version is now reflected in the module path (#22).
  • gopkg.in/yaml.v3 is upgraded to 496545a.
  • TOML again uses github.com/BurntSushi/toml (v1.1.0), fixing several upstream bugs.

Notes

  • The TOML encoder/decoder use new strategies for maintaining order (dynamic struct generation & key tracking).

Installation

Available for macOS via Homebrew:

$ brew install yj

Binaries for Linux, macOS, and Windows are attached below.

Alternatively, you may also install yj via go get:

$ go get github.com/sclevine/yj/[email protected]

yj is also available as a Docker image.

v5.0.0

3 years ago

Changes

  • Conversions between all formats now preserve map order.
  • The -t flag now parses/emits TOML v1.0.0-rc.1 instead of v0.4.0.
  • The -v flag now prints the version of yj (#9).
  • YAML conversions now parse/emit floats unambiguously (#3).
  • The -n flag is now enabled by default when converting between formats that both support NaN, Inf, etc.

Notes

  • YAML now uses gopkg.in/yaml.v3 instead of gopkg.in/yaml.v2.
  • TOML now uses github.com/pelletier/go-toml instead of github.com/BurntSushi/toml.
  • For most formats, preserving map order required manually parsing the AST of the various data format libraries. This change improved other formatting issues, such as the ambiguity of floats in YAML. However, it also increased the complexity of yj significantly -- please report bugs!

Installation

Available for macOS via Homebrew:

$ brew install yj

Binaries for Linux, macOS, and Windows are attached below.

Alternatively, you may also install yj via go get:

$ go get github.com/sclevine/yj

v4.0.0

5 years ago

Release Notes

Features

  • Add -i flag to indent JSON and TOML output (#4).

Breaking Changes

  • TOML output is now unindented by default. Pass -i to use the previous behavior.

    BurntSushi/toml applies more aggressive indentation compared to the examples in the TOML spec, and the TOML spec does not recommend (or recommend against) indenting. Opt-in indentation seems preferable.

v3.1.0

5 years ago

Release Notes

Features

  • Reduce memory footprint
  • Improve output when input is empty
  • Update usage text

Maintenance

  • Setup CI
  • Refactor extensively
  • Add integration tests
  • Switch to proper semver

v3.0

5 years ago
  • Add support for HCL
  • Improve error messages
  • Switch to Go Modules

v2.0

5 years ago
  • Add support for TOML
  • Remove support for candiedyaml parser

v1.0

7 years ago
opal:yj stephen$ yj -h
Usage: yj [-][rcjenkh]

Converts stdin from JSON/YAML to YAML/JSON.

-r     Convert JSON to YAML instead of YAML to JSON
-c     Use CandiedYAML parser instead of GoYAML parser
-n     Do not covert Infinity, -Infinity, and NaN to/from strings
-h     Show this help message

YAML to JSON options:

-e     Escape HTML in JSON output (ignored for JSON to YAML)

JSON to YAML (-r) options:

-y     Use a YAML decoder instead of a JSON decoder to parse JSON
-k     Attempt to parse keys as JSON objects/numbers