summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-07 06:45:28 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-07 06:45:28 +0000
commit4581ebefe9be030a9aa2736aef78c1060111c388 (patch)
tree4f0b8d40766015ad8549c595d1ec9022e5d534d2
parent4a03ee8505a359e75fffe3b60923c3ef7f014d4e (diff)
downloadruby-4581ebefe9be030a9aa2736aef78c1060111c388.tar.gz
ruby-4581ebefe9be030a9aa2736aef78c1060111c388.tar.xz
ruby-4581ebefe9be030a9aa2736aef78c1060111c388.zip
* lib/pp.rb: use Hash for recursion check as inspect.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--lib/pp.rb12
2 files changed, 10 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 57e4b407c..8ced755d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Dec 7 15:44:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: use Hash for recursion check as inspect.
+
Fri Dec 7 15:04:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* array.c (flatten): some performance improvements, based on a patch
diff --git a/lib/pp.rb b/lib/pp.rb
index 0202c5207..74f690e9f 100644
--- a/lib/pp.rb
+++ b/lib/pp.rb
@@ -111,13 +111,13 @@ class PP < PrettyPrint
end
if Thread.current[:__recursive_key__][:inspect] == nil
- Thread.current[:__recursive_key__][:inspect] = []
+ Thread.current[:__recursive_key__][:inspect] = {}
end
save = Thread.current[:__recursive_key__][:inspect]
begin
- Thread.current[:__recursive_key__][:inspect] = []
+ Thread.current[:__recursive_key__][:inspect] = {}
yield
ensure
Thread.current[:__recursive_key__][:inspect] = save
@@ -130,10 +130,10 @@ class PP < PrettyPrint
Thread.current[:__recursive_key__][:inspect].include?(id)
end
def push_inspect_key(id)
- Thread.current[:__recursive_key__][:inspect] << id
+ Thread.current[:__recursive_key__][:inspect][id] = true
end
- def pop_inspect_key
- Thread.current[:__recursive_key__][:inspect].pop
+ def pop_inspect_key(id)
+ Thread.current[:__recursive_key__][:inspect].delete id
end
# Adds +obj+ to the pretty printing buffer
@@ -153,7 +153,7 @@ class PP < PrettyPrint
push_inspect_key(id)
group {obj.pretty_print self}
ensure
- pop_inspect_key unless PP.sharing_detection
+ pop_inspect_key(id) unless PP.sharing_detection
end
end