Sha256: 2ec28798afb26629448b1932eaf21ebda1e283a7b811e371e5c55eb3fd38c439
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
require "irb/command" module Irbtools module Command class Howtocall < IRB::Command::Base category "Introspection" description "Displays method signatures based on Method#parameters" help_message <<~HELP Displays method signatures based on Method#parameters, with the same limitations, so it's more useful with methods implemented in Ruby itself Example usages: >> howtocall Gem.add_to_load_path >> howtocall Array#sum HELP def transform_arg(arg) if arg.empty? "[]" elsif arg.strip =~ /\A(?:([\w:]+)([#.]))?(\w+[?!]?)\z/ if $1 if $2 == "#" "[#{$1}, #{$1}.instance_method(:#{$3})]" else "[#{$1}, :#{$3}]" end else "[:#{$3}]" end else nil end end def execute(arg) if howtocall_parameters_code = transform_arg(arg) howtocall_parameters = @irb_context.workspace.binding.eval(howtocall_parameters_code) @irb_context.workspace.binding.send(:howtocall, *howtocall_parameters) else warn "howtocall: Please use rdoc syntax, e.g. Array#sum" end rescue NameError warn "howtocall: Class or method not found" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
irbtools-4.1.0 | lib/irbtools/commands/howtocall.rb |