mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
Added comment operator examples
This commit is contained in:
parent
55a7fdfd8a
commit
2362451fda
@ -66,6 +66,86 @@ a: cat # cat
|
|||||||
b: dog # dog
|
b: dog # dog
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Where is the comment - map key example
|
||||||
|
The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value).
|
||||||
|
From this, you can see the 'hello-world-comment' is actually on the 'hello' key
|
||||||
|
|
||||||
|
Given a sample.yml file of:
|
||||||
|
```yaml
|
||||||
|
hello: # hello-world-comment
|
||||||
|
message: world
|
||||||
|
```
|
||||||
|
then
|
||||||
|
```bash
|
||||||
|
yq '[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]' sample.yml
|
||||||
|
```
|
||||||
|
will output
|
||||||
|
```yaml
|
||||||
|
- p: ""
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: hello
|
||||||
|
isKey: true
|
||||||
|
hc: ""
|
||||||
|
lc: hello-world-comment
|
||||||
|
fc: ""
|
||||||
|
- p: hello
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: hello.message
|
||||||
|
isKey: true
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: hello.message
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
```
|
||||||
|
|
||||||
|
## Where is the comment - array example
|
||||||
|
The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value).
|
||||||
|
From this, you can see the 'under-name-comment' is actually on the first child
|
||||||
|
|
||||||
|
Given a sample.yml file of:
|
||||||
|
```yaml
|
||||||
|
name:
|
||||||
|
# under-name-comment
|
||||||
|
- first-array-child
|
||||||
|
```
|
||||||
|
then
|
||||||
|
```bash
|
||||||
|
yq '[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]' sample.yml
|
||||||
|
```
|
||||||
|
will output
|
||||||
|
```yaml
|
||||||
|
- p: ""
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: name
|
||||||
|
isKey: true
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: name
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: name.0
|
||||||
|
isKey: false
|
||||||
|
hc: under-name-comment
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
```
|
||||||
|
|
||||||
## Set head comment
|
## Set head comment
|
||||||
Given a sample.yml file of:
|
Given a sample.yml file of:
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -4,6 +4,55 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var expectedWhereIsMyCommentMapKey = `D0, P[], (!!seq)::- p: ""
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: hello
|
||||||
|
isKey: true
|
||||||
|
hc: ""
|
||||||
|
lc: hello-world-comment
|
||||||
|
fc: ""
|
||||||
|
- p: hello
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: hello.message
|
||||||
|
isKey: true
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: hello.message
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
`
|
||||||
|
|
||||||
|
var expectedWhereIsMyCommentArray = `D0, P[], (!!seq)::- p: ""
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: name
|
||||||
|
isKey: true
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: name
|
||||||
|
isKey: false
|
||||||
|
hc: ""
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
- p: name.0
|
||||||
|
isKey: false
|
||||||
|
hc: under-name-comment
|
||||||
|
lc: ""
|
||||||
|
fc: ""
|
||||||
|
`
|
||||||
|
|
||||||
var commentOperatorScenarios = []expressionScenario{
|
var commentOperatorScenarios = []expressionScenario{
|
||||||
{
|
{
|
||||||
description: "Set line comment",
|
description: "Set line comment",
|
||||||
@ -56,6 +105,24 @@ var commentOperatorScenarios = []expressionScenario{
|
|||||||
"D0, P[], (!!map)::a: cat # cat\n# cat\n\n# cat\nb: dog # dog\n# dog\n\n# dog\n",
|
"D0, P[], (!!map)::a: cat # cat\n# cat\n\n# cat\nb: dog # dog\n# dog\n\n# dog\n",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
description: "Where is the comment - map key example",
|
||||||
|
subdescription: "The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value).\nFrom this, you can see the 'hello-world-comment' is actually on the 'hello' key",
|
||||||
|
document: "hello: # hello-world-comment\n message: world",
|
||||||
|
expression: `[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]`,
|
||||||
|
expected: []string{
|
||||||
|
expectedWhereIsMyCommentMapKey,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description: "Where is the comment - array example",
|
||||||
|
subdescription: "The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value).\nFrom this, you can see the 'under-name-comment' is actually on the first child",
|
||||||
|
document: "name:\n # under-name-comment\n - first-array-child",
|
||||||
|
expression: `[... | {"p": path | join("."), "isKey": is_key, "hc": headComment, "lc": lineComment, "fc": footComment}]`,
|
||||||
|
expected: []string{
|
||||||
|
expectedWhereIsMyCommentArray,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
description: "Set head comment",
|
description: "Set head comment",
|
||||||
document: `a: cat`,
|
document: `a: cat`,
|
||||||
|
Loading…
Reference in New Issue
Block a user