diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-04-12 11:18:25 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-04-12 11:51:08 +0200 |
commit | 81fc535b2b8cb2a726c8514f2ae91e913ac157c7 (patch) | |
tree | d37e85a0f87f9a3464f5e57c4de1241d671faf1c /module/vcomponent/base.scm | |
parent | UNFINISHED work on formats. (diff) | |
download | calp-81fc535b2b8cb2a726c8514f2ae91e913ac157c7.tar.gz calp-81fc535b2b8cb2a726c8514f2ae91e913ac157c7.tar.xz |
UNFINISHED work on data stores and formats.
Diffstat (limited to '')
-rw-r--r-- | module/vcomponent/base.scm | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/module/vcomponent/base.scm b/module/vcomponent/base.scm index e4982336..472c5074 100644 --- a/module/vcomponent/base.scm +++ b/module/vcomponent/base.scm @@ -30,6 +30,7 @@ parameters properties + copy-as-orphan copy-vcomponent x-property? internal-field? @@ -198,23 +199,25 @@ ;; TODO deep-copy on parameters? (get-vline-parameters vline))) +(define (copy-as-orphan component) + (make-vcomponent% + (type component) + (children component) + ;; properties + (alist->hashq-table + (hash-map->list (lambda (key value) + (cons key (if (list? value) + (map copy-vline value) + (copy-vline value)))) + (get-component-properties component))))) + + (define (copy-vcomponent component) - (let ((ev - (make-vcomponent% - (type component) - (children component) - ;; properties - (alist->hashq-table - (hash-map->list (lambda (key value) - (cons key (if (list? value) - (map copy-vline value) - (copy-vline value)))) - (get-component-properties component)))))) + (let ((ev (copy-as-orphan component))) (when (parent component) (reparent! (parent component) ev)) ev)) - (define (extract field) (lambda (e) (prop e field))) |