38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/concern.rb', line 38
def concern(lib, options={})
concern = Concern.class_from_lib(lib)
accessor = lib.split('/').last.to_sym
Concern.add_accessor_for_concern(self, accessor, concern)
concerned = eval(name) concern.included(concerned) if concern.respond_to? :included
if options[:delegate]
methods_to_delegate = if options[:delegate].is_a?(Array)
options[:delegate]
else
concern.public_instance_methods(false)
end
methods_to_delegate.each do |method|
class_eval <<-EOF, __FILE__, __LINE__
def #{method}(*args, &block)
#{accessor}.send(:#{method}, *args, &block)
end
EOF
end
end
end
|