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) +}