From 5484d7eb3589233c18d17ab22d4dbcfbe62d8665 Mon Sep 17 00:00:00 2001 From: kortschak Date: Tue, 23 Sep 2014 08:56:14 +0930 Subject: [PATCH] Type switch on otto.Value Ugh, this is not documented in otto. Leaving a panic for future cases where dynamic typing will jump out at us. Fixes issue #160. --- query/gremlin/session.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/query/gremlin/session.go b/query/gremlin/session.go index 887027e..16e54de 100644 --- a/query/gremlin/session.go +++ b/query/gremlin/session.go @@ -191,9 +191,17 @@ func (s *Session) ToText(result interface{}) string { } else { if data.val.IsObject() { export, _ := data.val.Export() - mapExport := export.(map[string]string) - for k, v := range mapExport { - out += fmt.Sprintf("%s : %v\n", k, v) + switch export := export.(type) { + case map[string]string: + for k, v := range export { + out += fmt.Sprintf("%s : %s\n", k, v) + } + case map[string]interface{}: + for k, v := range export { + out += fmt.Sprintf("%s : %v\n", k, v) + } + default: + panic(fmt.Sprintf("unexpected type: %T", export)) } } else { strVersion, _ := data.val.ToString()