Mercurial > yakumo_izuru > aya
comparison vendor/gopkg.in/yaml.v2/README.md @ 66:787b5ee0289d draft
Use vendored modules
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author | yakumo.izuru |
---|---|
date | Sun, 23 Jul 2023 13:18:53 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
65:6d985efa0f7a | 66:787b5ee0289d |
---|---|
1 # YAML support for the Go language | |
2 | |
3 Introduction | |
4 ------------ | |
5 | |
6 The yaml package enables Go programs to comfortably encode and decode YAML | |
7 values. It was developed within [Canonical](https://www.canonical.com) as | |
8 part of the [juju](https://juju.ubuntu.com) project, and is based on a | |
9 pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) | |
10 C library to parse and generate YAML data quickly and reliably. | |
11 | |
12 Compatibility | |
13 ------------- | |
14 | |
15 The yaml package supports most of YAML 1.1 and 1.2, including support for | |
16 anchors, tags, map merging, etc. Multi-document unmarshalling is not yet | |
17 implemented, and base-60 floats from YAML 1.1 are purposefully not | |
18 supported since they're a poor design and are gone in YAML 1.2. | |
19 | |
20 Installation and usage | |
21 ---------------------- | |
22 | |
23 The import path for the package is *gopkg.in/yaml.v2*. | |
24 | |
25 To install it, run: | |
26 | |
27 go get gopkg.in/yaml.v2 | |
28 | |
29 API documentation | |
30 ----------------- | |
31 | |
32 If opened in a browser, the import path itself leads to the API documentation: | |
33 | |
34 * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2) | |
35 | |
36 API stability | |
37 ------------- | |
38 | |
39 The package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in). | |
40 | |
41 | |
42 License | |
43 ------- | |
44 | |
45 The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details. | |
46 | |
47 | |
48 Example | |
49 ------- | |
50 | |
51 ```Go | |
52 package main | |
53 | |
54 import ( | |
55 "fmt" | |
56 "log" | |
57 | |
58 "gopkg.in/yaml.v2" | |
59 ) | |
60 | |
61 var data = ` | |
62 a: Easy! | |
63 b: | |
64 c: 2 | |
65 d: [3, 4] | |
66 ` | |
67 | |
68 // Note: struct fields must be public in order for unmarshal to | |
69 // correctly populate the data. | |
70 type T struct { | |
71 A string | |
72 B struct { | |
73 RenamedC int `yaml:"c"` | |
74 D []int `yaml:",flow"` | |
75 } | |
76 } | |
77 | |
78 func main() { | |
79 t := T{} | |
80 | |
81 err := yaml.Unmarshal([]byte(data), &t) | |
82 if err != nil { | |
83 log.Fatalf("error: %v", err) | |
84 } | |
85 fmt.Printf("--- t:\n%v\n\n", t) | |
86 | |
87 d, err := yaml.Marshal(&t) | |
88 if err != nil { | |
89 log.Fatalf("error: %v", err) | |
90 } | |
91 fmt.Printf("--- t dump:\n%s\n\n", string(d)) | |
92 | |
93 m := make(map[interface{}]interface{}) | |
94 | |
95 err = yaml.Unmarshal([]byte(data), &m) | |
96 if err != nil { | |
97 log.Fatalf("error: %v", err) | |
98 } | |
99 fmt.Printf("--- m:\n%v\n\n", m) | |
100 | |
101 d, err = yaml.Marshal(&m) | |
102 if err != nil { | |
103 log.Fatalf("error: %v", err) | |
104 } | |
105 fmt.Printf("--- m dump:\n%s\n\n", string(d)) | |
106 } | |
107 ``` | |
108 | |
109 This example will generate the following output: | |
110 | |
111 ``` | |
112 --- t: | |
113 {Easy! {2 [3 4]}} | |
114 | |
115 --- t dump: | |
116 a: Easy! | |
117 b: | |
118 c: 2 | |
119 d: [3, 4] | |
120 | |
121 | |
122 --- m: | |
123 map[a:Easy! b:map[c:2 d:[3 4]]] | |
124 | |
125 --- m dump: | |
126 a: Easy! | |
127 b: | |
128 c: 2 | |
129 d: | |
130 - 3 | |
131 - 4 | |
132 ``` | |
133 |