holywarez-mpt 0.1.3.11 → 0.1.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,4 @@
1
+ v0.1.3.12 subscribe class instance methods for events is now supported
1
2
  v0.1.3.11 wrappable was renamed to wrapable. "wrappable" will be removed in future versions
2
3
  v0.1.3.10 wrap ability without accessor
3
4
  v0.1.3.9 cache_method helper
@@ -1,6 +1,14 @@
1
1
  module UnorderedSubscribersExperiment
2
2
  include ::MPT
3
3
 
4
+ class Stub
5
+ def some_method(argument)
6
+ puts "Subscribe class instance for event: #{argument}"
7
+ end
8
+
9
+ subscribe :some_method, :for => "/some/method"
10
+ end
11
+
4
12
  experiment "Unordered subscribers with void event object" do
5
13
  Event.subscribe '/system/special-channel' do |parameter|
6
14
  self.event_object = parameter
@@ -13,4 +21,9 @@ module UnorderedSubscribersExperiment
13
21
  result = Event.trigger '/system/special-channel', "XXX"
14
22
  puts "Result is: #{result}"
15
23
  end
24
+
25
+ experiment "Subscribed instance methods" do
26
+ stub_instance = Stub.new
27
+ Event.trigger '/some/method', "[SUCCESS]"
28
+ end
16
29
  end
data/install_gem.bat CHANGED
@@ -1,5 +1,5 @@
1
1
  call rake manifest
2
2
  call rake install
3
3
  cd pkg
4
- call gem install mpt-0.1.3.11.gem
4
+ call gem install mpt-0.1.3.12.gem
5
5
  cd ..
data/lib/event.rb CHANGED
@@ -77,3 +77,44 @@ module MPT
77
77
  end # end of class Event
78
78
 
79
79
  end
80
+
81
+ class Class
82
+ def subscribe( target, options )
83
+ return if options[:for].blank?
84
+
85
+ unless self.respond_to?( :new_with_subscribe_support )
86
+ code_to_eval = <<-EOC
87
+ class << self
88
+ def register_subscribe(target, options)
89
+ es = @@event_subscribes ||= {}
90
+ est = es[options[:for]] ||= []
91
+ est << target
92
+ end
93
+
94
+ def new_with_subscribe_support(*constructor_arguments)
95
+ instance = new_without_subscribe_support(*constructor_arguments)
96
+ ::MPT::Event.subscribe( "#{options[:for]}", :owner => instance ) do |*args|
97
+ instance.send( "trigger_event", "#{options[:for]}", *args )
98
+ end
99
+ instance
100
+ end
101
+
102
+ alias_method_chain :new, :subscribe_support
103
+ end
104
+
105
+ private
106
+ def trigger_event(name, *args)
107
+ @@event_subscribes[name].each do |method_name|
108
+ self.send( method_name, *args )
109
+ end
110
+ end
111
+ EOC
112
+
113
+ puts code_to_eval
114
+ self.class_eval( code_to_eval, __FILE__, __LINE__ )
115
+ end
116
+
117
+ self.register_subscribe( target, options )
118
+
119
+ end
120
+ end
data/mpt.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{mpt}
5
- s.version = "0.1.3.11"
5
+ s.version = "0.1.3.12"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Anatoly Lapshin"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holywarez-mpt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3.11
4
+ version: 0.1.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anatoly Lapshin