@@ -51,6 +51,9 @@ func (o *CandidateNode) UnmarshalGoccyYAML(node ast.Node, cm yaml.CommentMap, an
51
51
}
52
52
53
53
o .Value = node .String ()
54
+ o .Line = node .GetToken ().Position .Line
55
+ o .Column = node .GetToken ().Position .Column
56
+
54
57
switch node .Type () {
55
58
case ast .IntegerType :
56
59
o .Kind = ScalarNode
@@ -170,6 +173,7 @@ func (o *CandidateNode) UnmarshalGoccyYAML(node ast.Node, cm yaml.CommentMap, an
170
173
case ast .MergeKeyType :
171
174
log .Debugf ("UnmarshalYAML - a merge key" )
172
175
o .Kind = ScalarNode
176
+ o .Tag = "!!merge" // note - I should be able to get rid of this.
173
177
o .Value = "<<"
174
178
175
179
default :
@@ -181,22 +185,23 @@ func (o *CandidateNode) UnmarshalGoccyYAML(node ast.Node, cm yaml.CommentMap, an
181
185
182
186
func (o * CandidateNode ) goccyProcessMappingValueNode (mappingEntry * ast.MappingValueNode , cm yaml.CommentMap , anchorMap map [string ]* CandidateNode ) error {
183
187
log .Debug ("UnmarshalYAML MAP KEY entry %v" , mappingEntry .Key )
184
- keyNode , err := o .goccyDecodeIntoChild (mappingEntry .Key , cm , anchorMap )
185
- if err != nil {
188
+
189
+ // AddKeyValueFirst because it clones the nodes, and we want to have the real refs when Unmarshalling
190
+ // particularly for the anchorMap
191
+ keyNode , valueNode := o .AddKeyValueChild (& CandidateNode {}, & CandidateNode {})
192
+
193
+ if err := keyNode .UnmarshalGoccyYAML (mappingEntry .Key , cm , anchorMap ); err != nil {
186
194
return err
187
195
}
188
- keyNode .IsMapKey = true
189
196
190
197
log .Debug ("UnmarshalYAML MAP VALUE entry %v" , mappingEntry .Value )
191
- valueNode , err := o .goccyDecodeIntoChild (mappingEntry .Value , cm , anchorMap )
192
- if err != nil {
198
+ if err := valueNode .UnmarshalGoccyYAML (mappingEntry .Value , cm , anchorMap ); err != nil {
193
199
return err
194
200
}
195
201
196
202
if mappingEntry .FootComment != nil {
197
203
valueNode .FootComment = mappingEntry .FootComment .String ()
198
204
}
199
- o .AddKeyValueChild (keyNode , valueNode )
200
205
201
206
return nil
202
207
}
0 commit comments