8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/active-behavior/loader.rb', line 8
def define_module(name, &block)
name = name.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
parts = name.split("::").select { |i| i != "" }
parts.each_with_index do |part, index|
class_name = parts[0..index].join("::")
unless class_exists?(class_name)
eval("module ::#{class_name}; unloadable ; end")
else
clazz = eval("::#{class_name}")
clazz.unloadable if clazz.respond_to?(:unloadable)
end
end
clazz = eval(name)
clazz.class_eval(&block) if block_given?
clazz
end
|