Change soft-fail to use the config, rather than env
[rbx.git] / kernel / core / misc.rb
blobb87fa50c9389d6158f4ea15ada56cafecfd875c4
1 # depends on: module.rb class.rb
3 class << MAIN
4   def include(*mods)
5     Object.include(*mods)
6   end
7   
8   def public(*methods)
9     Object.public(*methods)
10   end
11   
12   def private(*methods)
13     Object.private(*methods)
14   end
16   def protected(*methods)
17     Object.protected(*methods)
18   end
19   
20   def add_method(name, obj)
21     Object.add_method(name, obj)
22   end
24   def alias_method(new_name, current_name)
25     Object.__send__ :alias_method, new_name, current_name
26   end
28   def __const_set__(name, obj)
29     Object.__const_set__(name, obj)
30   end
31 end
33 def self.to_s
34   "main"
35 end
37 class NilClass
38   alias_method :|, :^
40   def call(*a)
41     raise LocalJumpError, "not callable"
42   end
43 end
45 NIL = nil
47 class TrueClass
48   alias_method :inspect, :to_s
49 end
51 TRUE = true
53 class FalseClass
54   alias_method :|, :^
55   alias_method :inspect, :to_s
56 end
58 FALSE = false
60 Undefined = Object.new
63 # This is used to prevent recursively traversing an object graph.
65 module RecursionGuard
66   def self.inspecting?(obj)
67     stack.include?(obj.object_id)
68   end
70   def self.inspect(obj, &block)
71     stack.push(obj.object_id)
72     begin
73       yield
74     ensure
75       stack.pop
76     end
77   end
79   def self.stack
80     stack = Thread.current[:inspecting] ||= []
81   end
82 end