module Messaging::Message::Copy
Public Class Methods
call(source, receiver=nil, copy: nil, include: nil, exclude: nil, metadata: nil, strict: nil)
click to toggle source
# File lib/messaging/message/copy.rb, line 8 def self.call(source, receiver=nil, copy: nil, include: nil, exclude: nil, metadata: nil, strict: nil) copy(source, receiver, copy: copy, include: include, exclude: exclude, metadata: metadata, strict: strict) end
Public Instance Methods
copy(source, receiver=nil, copy: nil, include: nil, exclude: nil, metadata: nil, strict: nil)
click to toggle source
# File lib/messaging/message/copy.rb, line 12 def copy(source, receiver=nil, copy: nil, include: nil, exclude: nil, metadata: nil, strict: nil) metadata ||= false strict ||= false if receiver.nil? receiver = self end if receiver.class == Class receiver = receiver.build end if copy.nil? && include.nil? include = source.class.attribute_names end begin SetAttributes.(receiver, source, copy: copy, include: include, exclude: exclude, strict: strict) rescue SetAttributes::Assign::Error => e raise Error, e.message, e.backtrace end if metadata metadata_include = source.metadata.class.attribute_names - [:properties, :local_properties] SetAttributes.(receiver.metadata, source.metadata, include: metadata_include) receiver.metadata.properties = source.metadata.properties.dup receiver.metadata.local_properties = source.metadata.local_properties.dup end receiver end