diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-11-13 22:06:13 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-11-16 00:51:19 +0100 |
commit | 34059d4d71cb8081d065467cd32e31c2aa21c728 (patch) | |
tree | 0b779efbd15f6deff6844ba10d4801ecfb8a381f /module/vcomponent | |
parent | STASH: Start writing vcomponent datetime tests. (diff) | |
download | calp-34059d4d71cb8081d065467cd32e31c2aa21c728.tar.gz calp-34059d4d71cb8081d065467cd32e31c2aa21c728.tar.xz |
Add vcomponent-equal?.
Diffstat (limited to 'module/vcomponent')
-rw-r--r-- | module/vcomponent/base.scm | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/module/vcomponent/base.scm b/module/vcomponent/base.scm index 2a607fc5..4cacbb46 100644 --- a/module/vcomponent/base.scm +++ b/module/vcomponent/base.scm @@ -20,6 +20,8 @@ children type parent add-child + vcomponent-equal? + remove-property prop* prop extract extract* @@ -96,6 +98,14 @@ default: (table) type: table?) (parent default: #f type: (or false? vcomponent?))) +(define (vcomponent-equal? a b) + (and (eqv? (type a) (type b)) + (= (length (children a)) (length (children b))) + (every vcomponent-equal? + (sort* (children a) string< (extract 'UID)) + (sort* (children b) string< (extract 'UID))) + (equal? (properties a) (properties b)))) + (define prop* (case-lambda ((object key) |