feat: initial commit
This commit is contained in:
commit
a161b86c9a
705 changed files with 288162 additions and 0 deletions
58
vendor/sourcery.dny.nu/pana/pana.go
vendored
Normal file
58
vendor/sourcery.dny.nu/pana/pana.go
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
package pana
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
|
||||
ld "sourcery.dny.nu/longdistance"
|
||||
)
|
||||
|
||||
// Has checks if an object has a specific property set.
|
||||
//
|
||||
// It handles JSON-LD keyword aliasses for id and type.
|
||||
func Has[T ld.Internal](in *T, property string) bool {
|
||||
if property == "id" {
|
||||
property = ld.KeywordID
|
||||
}
|
||||
|
||||
if property == "type" {
|
||||
property = ld.KeywordType
|
||||
}
|
||||
|
||||
return (*ld.Node)(unsafe.Pointer(in)).Has(property)
|
||||
}
|
||||
|
||||
// IsReference indicates if this object is a reference.
|
||||
//
|
||||
// This means it only has the ID, and optionally a Type, set. You'll need to
|
||||
// retrieve the object using the ID to get additional properties.
|
||||
func IsReference[T ld.Internal](in *T) bool {
|
||||
return (*ld.Node)(unsafe.Pointer(in)).IsSubjectReference()
|
||||
}
|
||||
|
||||
// IsObject indicates if this object is a (partially) complete object.
|
||||
//
|
||||
// This means it has an ID, optionally a Type and at least one other
|
||||
// property. It doesn't mean the object representation is complete, and you may
|
||||
// need to retrieve the object using the ID to get additional properties.
|
||||
func IsObjec[T ld.Internal](in *T) bool {
|
||||
return (*ld.Node)(unsafe.Pointer(in)).IsSubject()
|
||||
}
|
||||
|
||||
// Properties returns a set with an entry for each property set on an object.
|
||||
//
|
||||
// It handles JSON-LD keyword aliasses for id and type.
|
||||
func Properties[T ld.Internal](in *T) map[string]struct{} {
|
||||
s := (*ld.Node)(unsafe.Pointer(in)).PropertySet()
|
||||
|
||||
if _, ok := s[ld.KeywordID]; ok {
|
||||
delete(s, ld.KeywordID)
|
||||
s["id"] = struct{}{}
|
||||
}
|
||||
|
||||
if _, ok := s[ld.KeywordType]; ok {
|
||||
delete(s, ld.KeywordType)
|
||||
s["type"] = struct{}{}
|
||||
}
|
||||
|
||||
return s
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue