28
29
30
31
32
33
34
35
36
37
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
65
|
# File 'lib/matrix_sdk/extensions.rb', line 28
def events(*symbols)
module_name = "#{name}Events"
initializers = []
readers = []
methods = []
symbols.each do |sym|
name = sym.to_s
initializers << "
@on_#{name} = MatrixSdk::EventHandlerArray.new
"
readers << ":on_#{name}"
methods << "
def fire_#{name}(ev, filter = nil)
@on_#{name}.fire(ev, filter)
when_#{name}(ev) if !ev.handled?
end
def when_#{name}(ev); end
"
end
class_eval "
module #{module_name}
attr_reader #{readers.join ', '}
def event_initialize
#{initializers.join}
end
#{methods.join}
end
include #{module_name}
", __FILE__, __LINE__ - 12
end
|