Add modify-as-document form.
activitystreams/ontology.scm
| 69 | 69 | as-document-set | |
| 70 | 70 | as-document-delete | |
| 71 | 71 | as-document-delete* | |
| 72 | + | modify-as-document | |
| 72 | 73 | ||
| 73 | 74 | json->as-document | |
| 74 | 75 | uri->as-document | |
… | |||
| 371 | 372 | (as-document-types document) | |
| 372 | 373 | (as-alist-delete* (as-document-properties document) key))) | |
| 373 | 374 | ||
| 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 | + | ||
| 374 | 393 | (define (json->as-document ontology document) | |
| 375 | 394 | (define (uri->datatype type) | |
| 376 | 395 | (let ((candidates (filter (lambda (t) (equal? (as-type-uri t) type)) | |