Skip to content

Commit b60eede

Browse files
committed
how does this even happen
1 parent 0a6b618 commit b60eede

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module ObjectSpace
2+
def self.each_object(target_klass, &block)
3+
klasses = [Object]
4+
i = 0
5+
loop do
6+
klass = klasses[i]
7+
yield klass
8+
names = `klass.$$const` && `Object.keys(klass.$$const)`
9+
names.each do |name|
10+
begin
11+
k = klass.const_get(name) rescue nil
12+
next unless `k.$$const`
13+
next unless k.respond_to?(:is_a?)
14+
next if klasses.include?(k)
15+
16+
klasses << k if k.is_a? target_klass
17+
rescue Exception => e
18+
next
19+
end
20+
end if names
21+
i += 1
22+
break if i >= klasses.length
23+
end
24+
end
25+
end

0 commit comments

Comments
 (0)