From 4da6fa28f884329e04b3916565b6ba674705345a Mon Sep 17 00:00:00 2001 From: zzak Date: Fri, 21 Dec 2012 17:08:24 +0000 Subject: * lib/irb/inspector.rb, lib/irb/context.rb: Move IRB::INSPECTORS and class methods to IRB::Inspector [ruby-core:51067][Bug #7598] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/irb/inspector.rb | 122 +++++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 61 deletions(-) (limited to 'lib/irb/inspector.rb') diff --git a/lib/irb/inspector.rb b/lib/irb/inspector.rb index 94f42d5217..121309f3c6 100644 --- a/lib/irb/inspector.rb +++ b/lib/irb/inspector.rb @@ -41,6 +41,62 @@ module IRB # :nodoc: # irb(main):001:0> "what?" #=> omg! what? # class Inspector + # Default inspectors available to irb, this includes: + # + # +:pp+:: Using Kernel#pretty_inspect + # +:yaml+:: Using YAML.dump + # +:marshal+:: Using Marshal.dump + INSPECTORS = {} + + # Determines the inspector to use where +inspector+ is one of the keys passed + # during inspector definition. + def self.keys_with_inspector(inspector) + select{|k,v| v == inspector}.collect{|k, v| k} + end + + # Example + # + # Inspector.def_inspector(key, init_p=nil){|v| v.inspect} + # Inspector.def_inspector([key1,..], init_p=nil){|v| v.inspect} + # Inspector.def_inspector(key, inspector) + # Inspector.def_inspector([key1,...], inspector) + def self.def_inspector(key, arg=nil, &block) + # if !block_given? + # case arg + # when nil, Proc + # inspector = IRB::Inspector(init_p) + # when Inspector + # inspector = init_p + # else + # IRB.Raise IllegalParameter, init_p + # end + # init_p = nil + # else + # inspector = IRB::Inspector(block, init_p) + # end + + if block_given? + inspector = IRB::Inspector(block, arg) + else + inspector = arg + end + + case key + when Array + for k in key + def_inspector(k, inspector) + end + when Symbol + INSPECTORS[key] = inspector + INSPECTORS[key.to_s] = inspector + when String + INSPECTORS[key] = inspector + INSPECTORS[key.intern] = inspector + else + INSPECTORS[key] = inspector + end + end + # Creates a new inspector object, using the given +inspect_proc+ when # output return values in irb. def initialize(inspect_proc, init_proc = nil) @@ -60,72 +116,16 @@ module IRB # :nodoc: end end - # Default inspectors available to irb, this includes: - # - # +:pp+:: Using Kernel#pretty_inspect - # +:yaml+:: Using YAML.dump - # +:marshal+:: Using Marshal.dump - INSPECTORS = {} - - # Determines the inspector to use where +inspector+ is one of the keys passed - # during inspector definition. - def INSPECTORS.keys_with_inspector(inspector) - select{|k,v| v == inspector}.collect{|k, v| k} - end - - # Example - # - # INSPECTORS.def_inspector(key, init_p=nil){|v| v.inspect} - # INSPECTORS.def_inspector([key1,..], init_p=nil){|v| v.inspect} - # INSPECTORS.def_inspector(key, inspector) - # INSPECTORS.def_inspector([key1,...], inspector) - def INSPECTORS.def_inspector(key, arg=nil, &block) -# if !block_given? -# case arg -# when nil, Proc -# inspector = IRB::Inspector(init_p) -# when Inspector -# inspector = init_p -# else -# IRB.Raise IllegalParameter, init_p -# end -# init_p = nil -# else -# inspector = IRB::Inspector(block, init_p) -# end - - if block_given? - inspector = IRB::Inspector(block, arg) - else - inspector = arg - end - - case key - when Array - for k in key - def_inspector(k, inspector) - end - when Symbol - self[key] = inspector - self[key.to_s] = inspector - when String - self[key] = inspector - self[key.intern] = inspector - else - self[key] = inspector - end - end - - INSPECTORS.def_inspector([false, :to_s, :raw]){|v| v.to_s} - INSPECTORS.def_inspector([true, :p, :inspect]){|v| + Inspector.def_inspector([false, :to_s, :raw]){|v| v.to_s} + Inspector.def_inspector([true, :p, :inspect]){|v| begin v.inspect rescue NoMethodError puts "(Object doesn't support #inspect)" end } - INSPECTORS.def_inspector([:pp, :pretty_inspect], proc{require "pp"}){|v| v.pretty_inspect.chomp} - INSPECTORS.def_inspector([:yaml, :YAML], proc{require "yaml"}){|v| + Inspector.def_inspector([:pp, :pretty_inspect], proc{require "pp"}){|v| v.pretty_inspect.chomp} + Inspector.def_inspector([:yaml, :YAML], proc{require "yaml"}){|v| begin YAML.dump(v) rescue @@ -134,7 +134,7 @@ module IRB # :nodoc: end } - INSPECTORS.def_inspector([:marshal, :Marshal, :MARSHAL, Marshal]){|v| + Inspector.def_inspector([:marshal, :Marshal, :MARSHAL, Marshal]){|v| Marshal.dump(v) } end -- cgit v1.2.3