mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/irb/inspector.rb: forget svn add.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a7c32bf81d
commit
855d0d1a1a
2 changed files with 107 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
|||
Wed Jul 8 21:00:37 2009 Keiju Ishitsuka <keiju@emperor2.pendome>
|
||||
|
||||
* lib/irb/inspector.rb: forget svn add.
|
||||
|
||||
Wed Jul 8 19:10:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* error.c (rb_check_type): rejects typed data.
|
||||
|
|
103
lib/irb/inspector.rb
Normal file
103
lib/irb/inspector.rb
Normal file
|
@ -0,0 +1,103 @@
|
|||
#
|
||||
# irb/inspector.rb - inspect methods
|
||||
# $Release Version: 0.9.6$
|
||||
# $Revision: 1.19 $
|
||||
# $Date: 2002/06/11 07:51:31 $
|
||||
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
||||
#
|
||||
# --
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
module IRB
|
||||
|
||||
def IRB::Inspector(inspect, init = nil)
|
||||
Inspector.new(inspect, init)
|
||||
end
|
||||
|
||||
class Inspector
|
||||
def initialize(inspect_proc, init_proc = nil)
|
||||
@init = init_proc
|
||||
@inspect = inspect_proc
|
||||
end
|
||||
|
||||
def init
|
||||
@init.call if @init
|
||||
end
|
||||
|
||||
def inspect_value(v)
|
||||
@inspect.call(v)
|
||||
end
|
||||
end
|
||||
|
||||
INSPECTORS = {}
|
||||
|
||||
def INSPECTORS.keys_with_inspector(inspector)
|
||||
select{|k,v| v == inspector}.collect{|k, v| k}
|
||||
end
|
||||
|
||||
# ex)
|
||||
# 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| v.inspect}
|
||||
INSPECTORS.def_inspector([:pp, :pretty_inspect], proc{require "pp"}){|v| v.pretty_inspect.chomp}
|
||||
INSPECTORS.def_inspector([:yaml, :YAML], proc{require "yaml"}){|v|
|
||||
begin
|
||||
YAML.dump(v)
|
||||
rescue
|
||||
puts "(can't dump yaml. use inspect)"
|
||||
v.inspect
|
||||
end
|
||||
}
|
||||
|
||||
INSPECTORS.def_inspector([:marshal, :Marshal, :MARSHAL, Marshal]){|v|
|
||||
Marshal.dump(v)
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue