REBOL [ Title: "Clone" Date: 3-Jul-2002 Name: Clone Version: 1.0.0 File: %Clone.r Author: "Andrew Martin" Purpose: "Clone objects by copying objects inside." Email: Al.Bri@xtra.co.nz Web: http://valley.150m.com Category: [util 4] Acknowledgements: "Erin A. Thomas" Example: [ New_object: Clone Original_Object [] ] Bug!: [ Clone destroys 'bind information during copy/deep of block!s!!!! ] ] Clone: function [ {Clones all sub-objects and hashes, so there are no multiple references.} [catch] Object [object!] "The object to clone." Block [block!] "Extra code for this object." ][ Cloned Member ][ throw-on-error [ Cloned: make Object Block foreach Word next first Object [ Member: get in Cloned :Word if same? :Member get in Object :Word [ set in Cloned :Word either object? :Member [ Clone :Member [] ][ either any [ series? :Member port? :Member bitset? :Member ][ copy/deep :Member ][ :Member ] ] ] ] Cloned ] ]