...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package tabwriter
16
17 import (
18 "fmt"
19 "strings"
20 "text/tabwriter"
21
22 "cuelang.org/go/cue"
23 )
24
25
26
27 func Write(data cue.Value) (string, error) {
28 var b strings.Builder
29 tw := tabwriter.NewWriter(&b, 0, 4, 1, ' ', 0)
30
31 write := func(v cue.Value) error {
32 b, err := v.Bytes()
33 if err != nil {
34 return err
35 }
36 _, err = tw.Write(b)
37 if err != nil {
38 return err
39 }
40 return nil
41 }
42
43 switch data.Kind() {
44 case cue.BytesKind, cue.StringKind:
45 if err := write(data); err != nil {
46 return "", err
47 }
48 case cue.ListKind:
49 for i, _ := data.List(); i.Next(); {
50 if err := write(i.Value()); err != nil {
51 return "", err
52 }
53 _, _ = tw.Write([]byte{'\n'})
54 }
55 default:
56 return "", fmt.Errorf("tabwriter.Write: unsupported type %v", data.Kind())
57 }
58
59 err := tw.Flush()
60 return b.String(), err
61 }
62
View as plain text