lib/amazing_print/core_ext/object.rb
# frozen_string_literal: true # Copyright (c) 2010-2016 Michael Dvorkin and contributors # # AmazingPrint is freely distributable under the terms of MIT license. # See LICENSE file or http://www.opensource.org/licenses/mit-license.php #------------------------------------------------------------------------------ class Object #:nodoc: # # Intercept methods below to inject @__amazing_print__ instance variable # so we know it is the *methods* array when formatting an array. # # Remaining instance '_methods' are handled in core_ext/class.rb. # %w[methods private_methods protected_methods public_methods singleton_methods].each do |name| original_method = instance_method(name) define_method name do |*args| methods = original_method.bind(self).call(*args) methods.instance_variable_set(:@__awesome_methods__, self) methods.extend(AwesomeMethodArray) methods end end end