@@ -2,9 +2,9 @@ package main
22
33import (
44 "bytes"
5+ "fmt"
56 "image"
67 "image/png"
7- "log"
88)
99
1010// Image converts an image.Image to DisplayData containing PNG []byte,
@@ -69,43 +69,35 @@ func (receipt *msgReceipt) PublishImage(img image.Image) error {
6969 return receipt .PublishDisplayData (data )
7070}
7171
72- // if vals[] contain a single non-nil value which is an image.Image
73- // or a display.Data, publishImageOrDisplayData sends a "display_data"
74- // broadcast message for such value, then returns nil to avoid overloading
75- // the front-end with huge amounts of output text:
76- // fmt.Sprint(val) is often very large for an image and other multimedia data.
77- func (receipt * msgReceipt ) PublishImageOrDisplayData (vals []interface {}) []interface {} {
72+ // if vals[] contain a single non-nil value which is an image.Image,
73+ // convert it to Data and return it.
74+ // if instead the single non-nil value is a Data, return it.
75+ // otherwise return MakeData("text/plain", fmt.Sprint(vals...))
76+ func renderResults (vals []interface {}) Data {
7877 var nilcount int
79- var data interface {}
78+ var obj interface {}
8079 for _ , val := range vals {
81- switch obj := val .(type ) {
80+ switch val .(type ) {
8281 case image.Image , Data :
83- data = obj
82+ obj = val
8483 case nil :
8584 nilcount ++
8685 }
8786 }
88- if data != nil && nilcount == len (vals )- 1 {
89- switch obj := data .(type ) {
87+ if obj != nil && nilcount == len (vals )- 1 {
88+ switch val := obj .(type ) {
9089 case image.Image :
91- err := receipt .PublishImage (obj )
92- if err != nil {
93- log .Printf ("Error publishing image.Image: %v\n " , err )
94- } else {
95- nilcount ++
90+ data , err := image0 (val )
91+ if err == nil {
92+ return data
9693 }
9794 case Data :
98- err := receipt .PublishDisplayData (obj )
99- if err != nil {
100- log .Printf ("Error publishing Data: %v\n " , err )
101- } else {
102- nilcount ++
103- }
95+ return val
10496 }
10597 }
10698 if nilcount == len (vals ) {
107- // if all values are nil, return empty slice
108- return nil
99+ // if all values are nil, return empty Data
100+ return Data {}
109101 }
110- return vals
102+ return MakeData ( "text/plain" , fmt . Sprint ( vals ... ))
111103}
0 commit comments