MCPcopy
hub / github.com/TomWright/dasel / Write

Method Write

parsing/csv/writer.go:15–66  ·  view source on GitHub ↗

Write writes a value to a byte slice.

(value *model.Value)

Source from the content-addressed store, hash-verified

13
14// Write writes a value to a byte slice.
15func (j *csvWriter) Write(value *model.Value) ([]byte, error) {
16 if !value.IsSlice() {
17 return nil, fmt.Errorf("csv writer expects root output to be a slice/array, got %s", value.Type())
18 }
19
20 buf := new(bytes.Buffer)
21 w := csv.NewWriter(buf)
22 w.Comma = j.separator
23
24 var headers []string
25
26 if err := value.RangeSlice(func(i int, row *model.Value) error {
27 if i == 0 {
28 var err error
29 headers, err = row.MapKeys()
30 if err != nil {
31 return fmt.Errorf("error getting map keys: %w", err)
32 }
33 if err := w.Write(headers); err != nil {
34 return fmt.Errorf("error writing headers: %w", err)
35 }
36 }
37
38 var values []string
39
40 for _, headerKey := range headers {
41 colV, err := row.GetMapKey(headerKey)
42 if err != nil {
43 return fmt.Errorf("error getting map key %q: %w", headerKey, err)
44 }
45
46 csvVal, err := valueToString(colV)
47 if err != nil {
48 return fmt.Errorf("error converting value to string: %w", err)
49 }
50
51 values = append(values, csvVal)
52 }
53
54 if err := w.Write(values); err != nil {
55 return fmt.Errorf("error writing row: %w", err)
56 }
57
58 return nil
59 }); err != nil {
60 return nil, fmt.Errorf("error ranging slice: %w", err)
61 }
62
63 w.Flush()
64
65 return buf.Bytes(), nil
66}

Callers

nothing calls this directly

Calls 8

WriteMethod · 0.95
IsSliceMethod · 0.80
TypeMethod · 0.80
NewWriterMethod · 0.80
RangeSliceMethod · 0.80
MapKeysMethod · 0.80
GetMapKeyMethod · 0.80
valueToStringFunction · 0.70

Tested by

no test coverage detected