ruby-changes:26491
From: zzak <ko1@a...>
Date: Sat, 22 Dec 2012 02:10:08 +0900 (JST)
Subject: [ruby-changes:26491] zzak:r38542 (trunk): * lib/irb/inspector.rb, lib/irb/context.rb: Move IRB::INSPECTORS and
zzak 2012-12-22 02:08:24 +0900 (Sat, 22 Dec 2012) New Revision: 38542 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38542 Log: * lib/irb/inspector.rb, lib/irb/context.rb: Move IRB::INSPECTORS and class methods to IRB::Inspector [ruby-core:51067][Bug #7598] Modified files: trunk/ChangeLog trunk/lib/irb/context.rb trunk/lib/irb/inspector.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 38541) +++ ChangeLog (revision 38542) @@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sat Dec 22 02:05:00 2012 Zachary Scott <zachary@z...> + + * lib/irb/inspector.rb, lib/irb/context.rb: Move IRB::INSPECTORS and + class methods to IRB::Inspector [ruby-core:51067][Bug #7598] + Sat Dec 22 00:28:46 2012 NAKAMURA Usaku <usa@r...> * object.c (rb_obj_hash): shouldn't assume object_id can be long. Index: lib/irb/context.rb =================================================================== --- lib/irb/context.rb (revision 38541) +++ lib/irb/context.rb (revision 38542) @@ -286,7 +286,7 @@ module IRB https://github.com/ruby/ruby/blob/trunk/lib/irb/context.rb#L286 # +nil+:: inspect mode in non-math mode, # non-inspect mode in math mode # - # See IRB::INSPECTORS for more information. + # See IRB::Inspector for more information. # # Can also be set using the +--inspect+ and +--noinspect+ command line # options. @@ -294,16 +294,16 @@ module IRB https://github.com/ruby/ruby/blob/trunk/lib/irb/context.rb#L294 # See IRB@Command+line+options for more command line options. def inspect_mode=(opt) - if i = INSPECTORS[opt] + if i = Inspector::INSPECTORS[opt] @inspect_mode = opt @inspect_method = i i.init else case opt when nil - if INSPECTORS.keys_with_inspector(INSPECTORS[true]).include?(@inspect_mode) + if Inspector.keys_with_inspector(Inspector::INSPECTORS[true]).include?(@inspect_mode) self.inspect_mode = false - elsif INSPECTORS.keys_with_inspector(INSPECTORS[false]).include?(@inspect_mode) + elsif Inspector.keys_with_inspector(Inspector::INSPECTORS[false]).include?(@inspect_mode) self.inspect_mode = true else puts "Can't switch inspect mode." @@ -322,10 +322,10 @@ module IRB https://github.com/ruby/ruby/blob/trunk/lib/irb/context.rb#L322 when Inspector prefix = "usr%d" i = 1 - while INSPECTORS[format(prefix, i)]; i += 1; end + while Inspector::INSPECTORS[format(prefix, i)]; i += 1; end @inspect_mode = format(prefix, i) @inspect_method = opt - INSPECTORS.def_inspector(format(prefix, i), @inspect_method) + Inspector.def_inspector(format(prefix, i), @inspect_method) else puts "Can't switch inspect mode(#{opt})." return Index: lib/irb/inspector.rb =================================================================== --- lib/irb/inspector.rb (revision 38541) +++ lib/irb/inspector.rb (revision 38542) @@ -41,6 +41,62 @@ module IRB # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/irb/inspector.rb#L41 # 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: https://github.com/ruby/ruby/blob/trunk/lib/irb/inspector.rb#L116 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: https://github.com/ruby/ruby/blob/trunk/lib/irb/inspector.rb#L134 end } - INSPECTORS.def_inspector([:marshal, :Marshal, :MARSHAL, Marshal]){|v| + Inspector.def_inspector([:marshal, :Marshal, :MARSHAL, Marshal]){|v| Marshal.dump(v) } end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/