From e59961adc11f1f7868571f7057f97c63eca62d84 Mon Sep 17 00:00:00 2001 From: Charles Iliya Krempeaux Date: Wed, 27 Sep 2023 13:45:47 +0900 Subject: [PATCH] initial commits --- errors.go | 10 ++++++++++ fprettyprint.go | 26 ++++++++++++++++++++++++++ jsonprettyprint.go | 21 +++++++++++++++++++++ prettyprint.go | 9 +++++++++ sprettyprint.go | 16 ++++++++++++++++ 5 files changed, 82 insertions(+) create mode 100644 errors.go create mode 100644 fprettyprint.go create mode 100644 jsonprettyprint.go create mode 100644 prettyprint.go create mode 100644 sprettyprint.go diff --git a/errors.go b/errors.go new file mode 100644 index 0000000..09990b7 --- /dev/null +++ b/errors.go @@ -0,0 +1,10 @@ +package jsonpp + +import ( + "sourcecode.social/reiver/go-erorr" +) + +const ( + errInternalError = erorr.Error("jsonpp: internal error") + errNilWriter = erorr.Error("jsonpp: nil writer") +) diff --git a/fprettyprint.go b/fprettyprint.go new file mode 100644 index 0000000..e23d757 --- /dev/null +++ b/fprettyprint.go @@ -0,0 +1,26 @@ +package jsonpp + +import ( + "bytes" + "io" +) + +func FPrettyPrint(writer io.Writer, json []byte) error { + if nil == writer { + return errNilWriter + } + + var buffer bytes.Buffer + + err := jsonPrettyPrint(&buffer, json) + if nil != err { + return err + } + + _, err = buffer.WriteTo(writer) + if nil != err { + return err + } + + return nil +} diff --git a/jsonprettyprint.go b/jsonprettyprint.go new file mode 100644 index 0000000..285124b --- /dev/null +++ b/jsonprettyprint.go @@ -0,0 +1,21 @@ +package jsonpp + +import ( + "bytes" + "encoding/json" +) + +const indent string = "\t" + +func jsonPrettyPrint(dst *bytes.Buffer, src []byte) error { + if nil == dst { + return errInternalError + } + + err := json.Indent(dst, src, "", indent) + if nil != err { + return err + } + + return nil +} diff --git a/prettyprint.go b/prettyprint.go new file mode 100644 index 0000000..44b6c4c --- /dev/null +++ b/prettyprint.go @@ -0,0 +1,9 @@ +package jsonpp + +import ( + "os" +) + +func PrettyPrint(json []byte) error { + return FPrettyPrint(os.Stdout, json) +} diff --git a/sprettyprint.go b/sprettyprint.go new file mode 100644 index 0000000..4f85cf4 --- /dev/null +++ b/sprettyprint.go @@ -0,0 +1,16 @@ +package jsonpp + +import ( + "bytes" +) + +func SPrettyPrint(json []byte) string { + var buffer bytes.Buffer + + err := jsonPrettyPrint(&buffer, json) + if nil != err { + return "" + } + + return buffer.String() +}