From 7b3803f2588cae3120baa4bce24b5e4c671b3694 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 14 Jul 2015 17:41:34 +0200 Subject: Narrow output --- ber/dump.go | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) (limited to 'ber') diff --git a/ber/dump.go b/ber/dump.go index 18976bd..d31ea78 100644 --- a/ber/dump.go +++ b/ber/dump.go @@ -2,47 +2,44 @@ package ber import "fmt" -func Dump(b []byte) { - dump(b, 0) +func Dump(b []byte) string { + return dump(b, 0) } -func dump(b []byte, indent int) { +func short(b []byte) string { + if len(b) > 5 { + return fmt.Sprint(b[:5], " ...") + } + return fmt.Sprint(b) +} + +func dump(b []byte, indent int) (s string) { class, kind, tag, _, value, rest := Split(b) - for i := indent; i > 0; i-- { - fmt.Print("\t") - } + s += fmt.Sprintf("%*s", indent*2, "") switch class { case classUniversal: switch tag { case tagInteger: - fmt.Println(tag, UnmarshalInt(value)) + s += fmt.Sprintln(tag, UnmarshalInt(value)) case tagObjectIdentifier: - fmt.Println(tag, UnmarshalOID(value)) + s += fmt.Sprintln(tag, UnmarshalOID(value)) case tagBitString: - fmt.Println(tag, UnmarshalBitString(value), value) + s += fmt.Sprintln(tag, UnmarshalBitString(value), value) default: - if len(value) > 5 { - fmt.Println(tag, kind, value[:5], "...") - } else { - fmt.Println(tag, kind, value) - } + s += fmt.Sprintln(tag, kind, short(value)) } default: - if len(value) > 5 { - fmt.Println(class, kind, byte(tag), value[:5], "...") - } else { - fmt.Println(class, kind, byte(tag), value) - } + s += fmt.Sprintln(class, kind, byte(tag), short(value)) } if len(value) > 0 && kind != kindPrimitive { - dump(value, indent+1) + s += dump(value, indent+1) } if len(rest) > 0 { - dump(rest, indent) + s += dump(rest, indent) } - + return } -- cgit v1.2.3