From dedb3faf8c79fd1938c1e79d5efa3290317ec13b Mon Sep 17 00:00:00 2001 From: mstar Date: Wed, 9 Apr 2025 14:52:37 +0200 Subject: [PATCH] Add compactor and marshal func --- parser.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/parser.go b/parser.go index 8af6b5c..0282e69 100644 --- a/parser.go +++ b/parser.go @@ -1,6 +1,7 @@ package goap import ( + "encoding/json" "fmt" "slices" @@ -155,3 +156,21 @@ func FindAttribute[T BaseApChain](object BaseApChain) (T, bool) { } return obj, true } + +func Compact(chain BaseApChain, ldContext map[string]any) (map[string]any, error) { + chainMap := chain.MarshalToMap() + proc := ld.NewJsonLdProcessor() + options := ld.NewJsonLdOptions("") + return proc.Compact(chainMap, ldContext, options) +} + +func Marshal(chain BaseApChain, ldContext map[string]any) ([]byte, error) { + chainMap := chain.MarshalToMap() + proc := ld.NewJsonLdProcessor() + options := ld.NewJsonLdOptions("") + compacted, err := proc.Compact(chainMap, ldContext, options) + if err != nil { + return nil, err + } + return json.Marshal(compacted) +}