From a0f4d6ba3629098225684b7095127950485c45a1 Mon Sep 17 00:00:00 2001 From: Jaidyn Ann <10477760+JadedCtrl@users.noreply.github.com> Date: Thu, 5 Sep 2024 11:45:27 -0500 Subject: [PATCH] =?UTF-8?q?Rename=20accessors=20from=20=E2=80=9CCLASS-SLOT?= =?UTF-8?q?=E2=80=9D=20to=20simply=20=E2=80=9CSLOT=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JSON-LD would automatically name accessors “CLASS-SLOT” which… gets a little bit clunky, no? Simply “SLOT” is nicer, IMO. --- src/activity-vocabulary.lisp | 63 +++++++++++++----------------------- src/json-ld.lisp | 9 +++--- 2 files changed, 26 insertions(+), 46 deletions(-) diff --git a/src/activity-vocabulary.lisp b/src/activity-vocabulary.lisp index 1a77f39..d430587 100644 --- a/src/activity-vocabulary.lisp +++ b/src/activity-vocabulary.lisp @@ -18,40 +18,29 @@ (defpackage #:activity-servist/vocab/activity (:use #:cl) (:nicknames "AS/V/A" "ACTIVITY-VOCABULARY" "ACTIVITY") - (:shadow #:block #:delete #:ignore #:listen #:read #:remove) + (:shadow #:block #:delete #:first #:ignore #:last #:listen #:read #:remove) ;; One should never USE this package, since some class-names shadow ;; core Common Lisp symbols! Beware! :P (:export ;; Classes - :accept :activity :add :announce :application :arrive :article :audio :block - :collection :collection-page :create :delete :dislike :document :event :flag - :follow :group :ignore :ignore :image :intransitive-activity :invite :join - :leave :like :link :listen :move :note :object :offer :ordered-collection - :ordered-collection-page :organization :page :person :place :profile - :question :read :reject :relationship :remove :service :tentative-accept - :tentative-reject :tombstone :travel :undo :update :video :view - ;; Accessors - :activity-actor :activity-instrument :activity-object :activity-origin - :activity-result :activity-target - :collection-current :collection-first :collection-items :collection-last - :collection-total-items - :collection-page-next :collection-page-part-of :collection-page-prev - :link-height :link-href :link-hreflang :link-media-type :link-name - :link-preview :link-rel :link-summary :link-width - :object-actor :object-attachment :object-attributed-to :object-audience - :object-content :object-context :object-name :object-end-time - :object-generator :object-icon :object-image :object-in-reply-to - :object-location :object-preview :object-published :object-replies - :object-start-time :object-summary :object-tag :object-updated - :object-url :object-to :object-bto :object-cc :object-bcc - :object-media-type :object-duration - :ordered-collection-page-start-index ordered-collection-ordered-items - :place-accuracy :place-altitude :place-latitude :place-longitude - :place-radius :place-units - :question-all-of :question-closed :question-one-of - :profile-describes - :relationship-object :relationship-relationship :relationship-subject - :tombstone-former-type :tombstone-deleted)) + :accept :activity :actor :add :announce :application :arrive :article :audio + :block :collection :collection-page :create :delete :dislike :document + :event :flag :follow :group :ignore :image :intransitive-activity :invite + :join :leave :like :link :listen :mention :move :note :object :offer + :ordered-collection :ordered-collection-page :organization :page :person + :place :profile :question :read :reject :relationship :remove :service + :tentative-accept :tentative-reject :tombstone :travel :undo :update :video + :view + ;; Slots/Accessors + :accuracy :actor :altitude :any-of :arrive :attachment :attributed-to + :audience :bcc :bto :cc :closed :content :context :current :deleted + :describes :duration :endpoints :end-time :first :followers :following + :former-type :generator :height :href :hreflang :icon :image :inbox + :in-reply-to :instrument :items :last :latitude :liked :location :longitude + :media-type :name :next :object :one-of :ordered-items :origin :outbox + :part-of :preferred-username :prev :preview :published :radius :rel + :relationship :replies :result :start-index :start-time :streams :subject + :summary :tag :target :to :total-items :units :updated :url :width)) (in-package #:activity-servist/vocab/activity) @@ -66,9 +55,9 @@ Items of DIRECT-CHILDREN should be of the form, (append '(progn) (mapcar (lambda (subclass-list) - (let ((class-name (first subclass-list)) - (type-name (second subclass-list)) - (documentation (third subclass-list))) + (let ((class-name (cl:first subclass-list)) + (type-name (second subclass-list)) + (documentation (third subclass-list))) `(json-ld:define-json-type (,class-name ,type-name) ,superclasses ,context () (:documentation ,documentation)))) @@ -171,37 +160,29 @@ The notion of “context” used is intentionally vague. The intended function i ;; Required actor slots (inbox "inbox" - :accessor actor-inbox :documentation "A reference to an OrderedCollection comprised of all the messages received by the actor.") (outbox "outbox" - :accessor actor-outbox :documentation "An OrderedCollection comprised of all the messages produced by the actor.") (following "following" - :accessor actor-following :documentation "A link to a collection of the actors that this actor is following.") (followers "followers" - :accessor actor-followers :documentation "A link to a collection of the actors that follow this actor.") ;; Optional Actor slots (liked "liked" - :accessor actor-liked :documentation "A link to a collection of objects this actor has liked.") (streams "streams" - :accessor actor-streams :documentation "A list of supplementary Collections which may be of interest.") (preferred-username "preferredUsername" - :accessor actor-preferred-username :documentation "A short username which may be used to refer to the actor, with no uniqueness guarantees.") (endpoints "endpoints" - :accessor actor-endpoints :documentation "A JSON object which maps additional (typically server/domain-wide) endpoints which may be useful either for this actor or someone referencing this actor. This mapping may be nested inside the actor document as the value or may be a link to a JSON-LD document with these properties. May include the properties “proxyUrl”, “oauthAuthorizationEndpoint”, “oauthTokenEndpoint”, “provideClientKey”, “signClientKey”, and “sharedInbox”. See the spec for details on these properties: https://www.w3.org/TR/activitypub/#proxyUrl")) diff --git a/src/json-ld.lisp b/src/json-ld.lisp index 4fd7151..6751f05 100644 --- a/src/json-ld.lisp +++ b/src/json-ld.lisp @@ -171,8 +171,7 @@ SLOT-OPTIONS are key/value pairs in the format of DEFCLASS’es slot-options. Keywords such as :INITFORM, :DOCUMENTATION, etc. can be used. There is one keyword with behavior unlike DEFCLASS, however — :ACCESSOR. -By default, a slot will have an accessor named after the class and slot, like -PLACE-RADIUS for the class PLACE and the slot RADIUS. +By default, a slot will have an accessor simply named after the slot. Set :ACCESSOR to NIL to define no accessor at all. OPTIONS contains ordinary class options, in the format of DEFCLASS (for example, @@ -232,12 +231,12 @@ See DEFINE-JSON-TYPE’s docstring for a description of parameters." "Return DEFCLASS-format slot options from DEFINE-JSON-TYPE-format SLOT-OPTS, applying default slot-options, etc." (json-type-normalize-slot-options - (merge-plists (json-type-implicit-slot-options class-name slot-name) + (merge-plists (json-type-implicit-slot-options slot-name) slot-opts))) -(defun json-type-implicit-slot-options (class-name slot-name) +(defun json-type-implicit-slot-options (slot-name) "Return default property-list slot options for a json-type CLOS class." - (list :accessor (intern (format nil "~A-~A" class-name slot-name)))) + (list :accessor (intern (format nil "~A" slot-name)))) (defun json-type-normalize-slot-options (slot-opts) "Take property-list slot options from a DEFINE-JSON-TYPE format and massage it