MCPcopy
hub / github.com/cli/cli / Write

Function Write

pkg/jsoncolor/jsoncolor.go:24–105  ·  view source on GitHub ↗

Write colorized JSON output parsed from reader

(w io.Writer, r io.Reader, indent string)

Source from the content-addressed store, hash-verified

22
23// Write colorized JSON output parsed from reader
24func Write(w io.Writer, r io.Reader, indent string) error {
25 dec := json.NewDecoder(r)
26 dec.UseNumber()
27
28 var idx int
29 var stack []json.Delim
30
31 if jsonWriter, ok := w.(JsonWriter); ok {
32 stack = append(stack, jsonWriter.Preface()...)
33 }
34
35 for {
36 t, err := dec.Token()
37 if err == io.EOF {
38 break
39 }
40 if err != nil {
41 return err
42 }
43
44 switch tt := t.(type) {
45 case json.Delim:
46 switch tt {
47 case '{', '[':
48 stack = append(stack, tt)
49 idx = 0
50 fmt.Fprintf(w, "\x1b[%sm%s\x1b[m", colorDelim, tt)
51 if dec.More() {
52 fmt.Fprint(w, "\n", strings.Repeat(indent, len(stack)))
53 }
54 continue
55 case '}', ']':
56 stack = stack[:len(stack)-1]
57 idx = 0
58 fmt.Fprintf(w, "\x1b[%sm%s\x1b[m", colorDelim, tt)
59 }
60 default:
61 b, err := marshalJSON(tt)
62 if err != nil {
63 return err
64 }
65
66 isKey := len(stack) > 0 && stack[len(stack)-1] == '{' && idx%2 == 0
67 idx++
68
69 var color string
70 if isKey {
71 color = colorKey
72 } else if tt == nil {
73 color = colorNull
74 } else {
75 switch t.(type) {
76 case string:
77 color = colorString
78 case bool:
79 color = colorBool
80 }
81 }

Callers 4

WriteMethod · 0.92
processResponseFunction · 0.92
telemetry.goFile · 0.92
TestWriteFunction · 0.85

Calls 3

marshalJSONFunction · 0.85
PrefaceMethod · 0.65
WriteMethod · 0.65

Tested by 1

TestWriteFunction · 0.68