From d667bbee0cb0f08aa407cbeaededfedbdc629c6d Mon Sep 17 00:00:00 2001 From: Evstigneev Denis Date: Wed, 28 Feb 2024 15:06:29 +0300 Subject: [PATCH] add option metadata --- options/options.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/options/options.go b/options/options.go index cda572a6..df38591f 100644 --- a/options/options.go +++ b/options/options.go @@ -157,6 +157,22 @@ func Metadata(md metadata.Metadata) Option { } } +func MetadataAny(md any) Option { + result := metadata.Metadata{} + switch vt := md.(type) { + case metadata.Metadata: + result = metadata.Copy(vt) + case []string: + for index := 0; index < len(vt); index += 2 { + result[vt[index]] = result[vt[index]] + } + } + + return func(src interface{}) error { + return Set(src, result, ".Metadata") + } +} + // Namespace to use func Namespace(ns string) Option { return func(src interface{}) error {