4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/magic_metaclass/module.rb', line 4
def const_missing(class_id)
begin
return normal_const_missing(class_id)
rescue
end
class_name = class_id.to_s
unless class_name =~ /\A([A-Za-z_]+)(Metaclass|Class|Eigenclass|Eigen)\Z/
raise NameError.new("uninitialized constant #{class_id}")
end
base_class_name = $1
begin
base_class = self.const_get base_class_name
rescue
raise NameError.new("uninitialized constant #{class_id}")
end
metaclass = class << base_class; self; end
self.const_set class_name, metaclass
end
|