diff options
Diffstat (limited to '')
-rw-r--r-- | module/vcomponent.scm | 2 | ||||
-rw-r--r-- | module/vcomponent/base.scm | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/module/vcomponent.scm b/module/vcomponent.scm index 7930bf92..f5f2583e 100644 --- a/module/vcomponent.scm +++ b/module/vcomponent.scm @@ -6,6 +6,8 @@ :select (parse-cal-path)) :re-export ( vcomponent + vcomponent? + vcomponent-equal? set-properties properties children 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) |