Method: Origami::Object#copy

Defined in:
lib/origami/object.rb

#copyObject

Deep copy of an object.



412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
# File 'lib/origami/object.rb', line 412

def copy
    saved_doc = @document
    saved_parent = @parent

    @document = @parent = nil # do not process parent object and document in the copy

    # Perform the recursive copy (quite dirty).
    copyobj = Marshal.load(Marshal.dump(self))

    # restore saved values
    @document = saved_doc
    @parent = saved_parent

    copyobj.set_document(saved_doc) if copyobj.indirect?
    copyobj.parent = parent

    copyobj
end