...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package yaml
16
17 import (
18 "bytes"
19 "fmt"
20 "io"
21
22 goyaml "gopkg.in/yaml.v2"
23 )
24
25 func SplitYAML(yamlBytes []byte) ([][]byte, error) {
26 r := bytes.NewReader(yamlBytes)
27 dec := goyaml.NewDecoder(r)
28 results := make([][]byte, 0)
29 var value map[string]interface{}
30 for eof := dec.Decode(&value); eof != io.EOF; eof = dec.Decode(&value) {
31 if eof != nil {
32 return nil, eof
33 }
34 bytes, err := goyaml.Marshal(value)
35 if err != nil {
36 return nil, fmt.Errorf("error marshalling '%v' to YAML: %v", value, err)
37 }
38 results = append(results, bytes)
39 value = make(map[string]interface{})
40 }
41 return results, nil
42 }
43
View as plain text