Tweak Litepub package to define LP:PERSON

… and switch DEFCONSTANT→DEFVAR for +NEW-CLASSES+
& +NEW-SLOTS+.
This commit is contained in:
Jaidyn Ann 2024-12-18 14:07:15 -06:00
parent a84872309c
commit b05f9e765e

View File

@ -39,24 +39,22 @@ canonical URL for it. This URI will be used in encoded LITEPUB:OBJECTs in the
@CONTEXT.
Defaults to a copy at jam.xwx.moe because why not? ¯\_()_/¯")
(unless +new-classes+
(defconstant +new-classes+ '(chat-message emoji emoji-react hashtag property-value)
"Simple list of classes/JSON types defined in this package.
Used by our overloaded JSON-LD:@CONTEXT to help choose the appropriate JSON-LD context."))
(defvar +new-classes+ '(chat-message emoji emoji-react hashtag property-value)
"Simple list of classes/JSON types defined in this package.
Used by our overloaded JSON-LD:@CONTEXT to help choose the appropriate JSON-LD context.")
;; This isnt pretty… but it helps us avoid bringing in another dependency! :^)
;; (closer-mop, that is.)
(unless +new-slots+
(defconstant +new-slots+
'(atom-uri sensitivep non-anonymous direct-message-p former-representations
public-key discoverablep manually-approves-followers-p also-known-as
capabilities ; Object ←↑
invisiblep list-message ; Activity
conversation ; Update
quote-url quote-uri) ; Note
"List of slots added to subclasses corresponding AS/VOCAB/ACTIVITY classes.
(defvar +new-slots+
'(atom-uri sensitivep non-anonymous direct-message-p former-representations
public-key discoverablep manually-approves-followers-p also-known-as
capabilities ; Object ←↑
invisiblep list-message ; Activity
conversation ; Update
quote-url quote-uri) ; Note
"List of slots added to subclasses corresponding AS/VOCAB/ACTIVITY classes.
For example, slots in our OBJECT that arent in AS/V/A:OBJECT.
Used by our overloaded JSON-LD:@CONTEXT to help choose the appropriate JSON-LD context."))
Used by our overloaded JSON-LD:@CONTEXT to help choose the appropriate JSON-LD context.")
;;; Core types
@ -117,6 +115,12 @@ One known capabilitity-name is Pleromas “acceptsChatMessages”.")))
(call-next-method)))))
;; We want our new Actor-specific slots to take effect.
(json-ld:define-json-type (person "Person") (as/v/a:actor object) *litepub-uri*
()
(:documentation "Represents an individual person."))
(json-ld:define-json-type (activity "Activity") (as/v/a:activity object) *litepub-uri*
(;; https://blog.dereferenced.org/leveraging-json-ld-compound-typing-for-behavioural-hinting-in-activitypub
(invisiblep