module ArrayToSelfConvert

Attributes

deep_clone[RW]

Public Class Methods

included(klass) click to toggle source
Calls superclass method
# File lib/screening.rb, line 8
def self.included(klass)
  methods = ::Array.public_instance_methods(true) - ::Kernel.public_instance_methods(false)
  methods |= ["to_s","to_a","inspect","==","=~","==="]
  methods.each do |method|
    define_method(method) do |*args, &block|
      res = super(*args, &block)
      if res.class == Array && method != 'to_a'
        cloned = deep_clone ? Marshal.load(Marshal.dump(self)) : self.dup
        cloned.clear.concat(res)
      else
        res
      end
    end
  end
end