github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/types/jsonconcat/array.go (about) 1 package jsonconcat 2 3 import ( 4 "context" 5 6 "github.com/lmorg/murex/lang/stdio" 7 "github.com/lmorg/murex/lang/types" 8 ) 9 10 func readArray(ctx context.Context, read stdio.Io, callback func([]byte)) error { 11 b, err := read.ReadAll() 12 if err != nil { 13 return err 14 } 15 16 cb := func(b []byte) { 17 callback(b) 18 } 19 20 return parse(b, cb) 21 } 22 23 func readArrayWithType(ctx context.Context, read stdio.Io, callback func(interface{}, string)) error { 24 b, err := read.ReadAll() 25 if err != nil { 26 return err 27 } 28 29 cb := func(b []byte) { 30 callback(b, types.Json) 31 } 32 33 return parse(b, cb) 34 } 35 36 type arrayWriter struct { 37 writer stdio.Io 38 } 39 40 func newArrayWriter(writer stdio.Io) (stdio.ArrayWriter, error) { 41 w := &arrayWriter{writer: writer} 42 return w, nil 43 } 44 45 func (w *arrayWriter) Write(b []byte) (err error) { 46 _, err = w.writer.Writeln(b) 47 return 48 } 49 50 func (w *arrayWriter) WriteString(s string) (err error) { 51 return w.Write([]byte(s)) 52 } 53 54 func (w *arrayWriter) Close() error { 55 return nil 56 }