Skip to content
This repository has been archived by the owner on Aug 16, 2024. It is now read-only.

Add UnknownFieldHandler #3

Merged
merged 1 commit into from
Aug 15, 2024
Merged

Add UnknownFieldHandler #3

merged 1 commit into from
Aug 15, 2024

Conversation

blaubaer
Copy link
Member

@blaubaer blaubaer commented Aug 15, 2024

Before we have to live with always break on unknown fields or not, using:

dec := yaml.NewDecoder(f)
dec.KnownFields(true)

With this change we can define a custom function, like:

dec := yaml.NewDecoder(f)
dec.OnUnknownField(func(node *Node, name reflect.Value, out reflect.Value) error {
   // Do our stuff...
})

Additionally, this can be also changed for yaml.Node, like:

func main() {
  var mt myType
  dec := yaml.NewDecoder(f)
  dec.OnUnknownField(func(node *Node, name reflect.Value, out reflect.Value) error {
     // Do our stuff...
  })
  dec.Decode(&mt)
}

func (m *myType) UnmarshalYAML(value *yaml.Node) error {
    value.OnUnknownField(func(node *Node, name reflect.Value, out reflect.Value) error {
       // Do other stuff...
    }) 
    value.Decode(...)
}

@blaubaer blaubaer added the enhancement New feature or request label Aug 15, 2024
@blaubaer blaubaer self-assigned this Aug 15, 2024
@blaubaer blaubaer merged commit 9dc1882 into main Aug 15, 2024
6 checks passed
@blaubaer blaubaer deleted the custom-unknown-field-handler branch August 15, 2024 21:28
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant