From 1a2554e59ec394b56dad3417cf20002c84050278 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 16 Apr 2021 08:43:52 -0400 Subject: node: Add replace method. --- starling/node.scm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/starling/node.scm b/starling/node.scm index dd5749c..cbb1027 100644 --- a/starling/node.scm +++ b/starling/node.scm @@ -59,6 +59,7 @@ on-attach on-detach attach-to + replace detach run-script stop-scripts @@ -349,6 +350,14 @@ (on-attach new-parent child)) new-children)) +(define-method (replace (parent-node ) . replacements) + (for-each (lambda (replacement) + (let ((old (child-ref parent-node (name replacement)))) + (when old + (detach old)))) + replacements) + (apply attach-to parent-node replacements)) + (define-method (detach (node )) (let ((p (parent node))) (when p -- cgit v1.2.3