annotate vendor/gopkg.in/yaml.v3/README.md @ 76:e8eb1fdb4b03 draft

Passed through golint only to get a load of garbage Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Mon, 04 Dec 2023 17:21:08 +0000
parents d8727551f403
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
74
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
1 # YAML support for the Go language
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
2
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
3 Introduction
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
4 ------------
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
5
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
6 The yaml package enables Go programs to comfortably encode and decode YAML
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
7 values. It was developed within [Canonical](https://www.canonical.com) as
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
8 part of the [juju](https://juju.ubuntu.com) project, and is based on a
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
9 pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
10 C library to parse and generate YAML data quickly and reliably.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
11
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
12 Compatibility
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
13 -------------
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
14
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
15 The yaml package supports most of YAML 1.2, but preserves some behavior
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
16 from 1.1 for backwards compatibility.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
17
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
18 Specifically, as of v3 of the yaml package:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
19
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
20 - YAML 1.1 bools (_yes/no, on/off_) are supported as long as they are being
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
21 decoded into a typed bool value. Otherwise they behave as a string. Booleans
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
22 in YAML 1.2 are _true/false_ only.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
23 - Octals encode and decode as _0777_ per YAML 1.1, rather than _0o777_
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
24 as specified in YAML 1.2, because most parsers still use the old format.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
25 Octals in the _0o777_ format are supported though, so new files work.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
26 - Does not support base-60 floats. These are gone from YAML 1.2, and were
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
27 actually never supported by this package as it's clearly a poor choice.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
28
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
29 and offers backwards
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
30 compatibility with YAML 1.1 in some cases.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
31 1.2, including support for
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
32 anchors, tags, map merging, etc. Multi-document unmarshalling is not yet
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
33 implemented, and base-60 floats from YAML 1.1 are purposefully not
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
34 supported since they're a poor design and are gone in YAML 1.2.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
35
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
36 Installation and usage
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
37 ----------------------
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
38
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
39 The import path for the package is *gopkg.in/yaml.v3*.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
40
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
41 To install it, run:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
42
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
43 go get gopkg.in/yaml.v3
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
44
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
45 API documentation
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
46 -----------------
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
47
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
48 If opened in a browser, the import path itself leads to the API documentation:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
49
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
50 - [https://gopkg.in/yaml.v3](https://gopkg.in/yaml.v3)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
51
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
52 API stability
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
53 -------------
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
54
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
55 The package API for yaml v3 will remain stable as described in [gopkg.in](https://gopkg.in).
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
56
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
57
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
58 License
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
59 -------
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
60
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
61 The yaml package is licensed under the MIT and Apache License 2.0 licenses.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
62 Please see the LICENSE file for details.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
63
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
64
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
65 Example
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
66 -------
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
67
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
68 ```Go
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
69 package main
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
70
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
71 import (
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
72 "fmt"
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
73 "log"
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
74
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
75 "gopkg.in/yaml.v3"
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
76 )
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
77
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
78 var data = `
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
79 a: Easy!
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
80 b:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
81 c: 2
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
82 d: [3, 4]
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
83 `
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
84
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
85 // Note: struct fields must be public in order for unmarshal to
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
86 // correctly populate the data.
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
87 type T struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
88 A string
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
89 B struct {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
90 RenamedC int `yaml:"c"`
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
91 D []int `yaml:",flow"`
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
92 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
93 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
94
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
95 func main() {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
96 t := T{}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
97
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
98 err := yaml.Unmarshal([]byte(data), &t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
99 if err != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
100 log.Fatalf("error: %v", err)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
101 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
102 fmt.Printf("--- t:\n%v\n\n", t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
103
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
104 d, err := yaml.Marshal(&t)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
105 if err != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
106 log.Fatalf("error: %v", err)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
107 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
108 fmt.Printf("--- t dump:\n%s\n\n", string(d))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
109
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
110 m := make(map[interface{}]interface{})
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
111
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
112 err = yaml.Unmarshal([]byte(data), &m)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
113 if err != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
114 log.Fatalf("error: %v", err)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
115 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
116 fmt.Printf("--- m:\n%v\n\n", m)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
117
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
118 d, err = yaml.Marshal(&m)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
119 if err != nil {
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
120 log.Fatalf("error: %v", err)
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
121 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
122 fmt.Printf("--- m dump:\n%s\n\n", string(d))
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
123 }
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
124 ```
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
125
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
126 This example will generate the following output:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
127
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
128 ```
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
129 --- t:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
130 {Easy! {2 [3 4]}}
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
131
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
132 --- t dump:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
133 a: Easy!
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
134 b:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
135 c: 2
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
136 d: [3, 4]
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
137
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
138
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
139 --- m:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
140 map[a:Easy! b:map[c:2 d:[3 4]]]
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
141
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
142 --- m dump:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
143 a: Easy!
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
144 b:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
145 c: 2
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
146 d:
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
147 - 3
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
148 - 4
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
149 ```
d8727551f403 The Empress (III)
yakumo.izuru
parents:
diff changeset
150