return fmt.Sprintf("BLOB(%d, %d)", blob.ChunkLen, blob.Len())
}
+func (blob BlobChunked) MarshalJSON() ([]byte, error) {
+ return []byte(`"` + blob.String() + `"`), nil
+}
+
type BlobReader struct {
R io.Reader
ChunkLen int64
import (
"bufio"
"encoding/hex"
+ "encoding/json"
"flag"
"fmt"
"io"
}
var (
+ dumpJSON = flag.Bool("json", false, "Dump as JSON")
MaxStrLen = flag.Uint("max-str-len", 64,
"Maximal string length to print")
MaxParseCycles = flag.Uint64("max-parse-cycles", 1<<63,
}
log.Fatal(err)
}
- printer(ctx.Iter(), []string{}, 1, false, false)
+ if *dumpJSON {
+ v, err := ctx.Unmarshal()
+ if err != nil {
+ log.Fatal(err)
+ }
+ e := json.NewEncoder(os.Stdout)
+ e.SetIndent("", " ")
+ err = e.Encode(&v)
+ if err != nil {
+ log.Fatal(err)
+ }
+ } else {
+ printer(ctx.Iter(), []string{}, 1, false, false)
+ }
off = ctx.Read
}
- if !*NoTotals {
+ if !*NoTotals && !*dumpJSON {
fmt.Println(off, "bytes")
}
}
func (h *Hexlet) IP() (ip net.IP) {
return net.IP(h[:])
}
+
+func (h *Hexlet) MarshalJSON() ([]byte, error) {
+ return []byte(`"HEXLET[` + h.UUID().String() + `]"`), nil
+}
}
return d.Iter().Magic(), data[d.Read:]
}
+
+func (m Magic) MarshalJSON() ([]byte, error) {
+ return []byte(`"MAGIC[` + m + `]"`), nil
+}
package keks
+import "encoding/hex"
+
type Raw []byte
+
+func (raw Raw) MarshalJSON() ([]byte, error) {
+ return []byte(`"RAW[` + hex.EncodeToString(raw) + `]"`), nil
+}