lib/byebug/commands/method.rb in byebug-5.0.0 vs lib/byebug/commands/method.rb in byebug-6.0.0
- old
+ new
@@ -1,20 +1,42 @@
require 'byebug/command'
+require 'byebug/helpers/eval'
module Byebug
#
# Show methods of specific classes/modules/objects.
#
class MethodCommand < Command
- include Columnize
+ include Helpers::EvalHelper
- def regexp
+ self.allow_in_post_mortem = true
+
+ def self.regexp
/^\s* m(?:ethod)? \s+ (i(:?nstance)?\s+)?/x
end
+ def self.description
+ <<-EOD
+ m[ethod] (i[nstance][ <obj>]|<class|module>)
+
+ #{short_description}
+
+ When invoked with "instance", shows instance methods of the object
+ specified as argument or of self no object was specified.
+
+ When invoked only with a class or module, shows class methods of the
+ class or module specified as argument.
+ EOD
+ end
+
+ def self.short_description
+ 'Shows methods of an object, class or module'
+ end
+
def execute
- obj = bb_eval(@match.post_match)
+ obj = single_thread_eval(@match.post_match)
+
result =
if @match[1]
prc('method.methods', obj.methods.sort) { |item, _| { name: item } }
elsif !obj.is_a?(Module)
pr('variable.errors.not_module', object: @match.post_match)
@@ -22,20 +44,8 @@
prc('method.methods', obj.instance_methods(false).sort) do |item, _|
{ name: item }
end
end
puts result
- end
-
- def description
- <<-EOD
- m[ethod] (i[nstance][ <obj>]|<class|module>)
-
- When invoked with "instance", shows instance methods of the object
- specified as argument or of self no object was specified.
-
- When invoked only with a class or module, shows class methods of the
- class or module specified as argument.
- EOD
end
end
end