Add modify-as-document form.

Julien LepillerTue Oct 06 04:00:16+0200 2020

ec20177

Add modify-as-document form.

activitystreams/ontology.scm

6969
            as-document-set
7070
            as-document-delete
7171
            as-document-delete*
72+
            modify-as-document
7273
7374
            json->as-document
7475
            uri->as-document

371372
    (as-document-types document)
372373
    (as-alist-delete* (as-document-properties document) key)))
373374
375+
(define-syntax modify-as-document
376+
  (lambda (x)
377+
    (syntax-case x (set-property remove-property  remove-property*)
378+
      ((_ doc)
379+
       #`doc)
380+
      ((_ doc (set-property key value) spec ...)
381+
       #`(modify-as-document
382+
           (as-document-set doc key value)
383+
           spec ...))
384+
      ((_ doc (remove-property key) spec ...)
385+
       #`(modify-as-document
386+
           (as-document-delete doc key)
387+
           spec ...))
388+
      ((_ doc (remove-property* key) spec ...)
389+
       #`(modify-as-document
390+
           (as-document-delete* doc key)
391+
           spec ...)))))
392+
374393
(define (json->as-document ontology document)
375394
  (define (uri->datatype type)
376395
    (let ((candidates (filter (lambda (t) (equal? (as-type-uri t) type))