module-cluster 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -46,6 +46,23 @@ module ::Module::Cluster
46
46
  return ::Module::Cluster.cluster( self, name )
47
47
 
48
48
  end
49
+
50
+ ##################
51
+ # has_cluster? #
52
+ ##################
53
+
54
+ ###
55
+ # Get cluster for name. Will create cluster if it does not already exist.
56
+ #
57
+ # @param name Name of cluster.
58
+ #
59
+ # @return [true,false] Whether cluster name exists for self.
60
+ #
61
+ def has_cluster?( name )
62
+
63
+ return ::Module::Cluster.has_cluster?( self, name )
64
+
65
+ end
49
66
 
50
67
  ##################################################################################################
51
68
  # private ######################################################################################
@@ -79,6 +96,8 @@ module ::Module::Cluster
79
96
  @clusters[ instance ] = instance_hash = { }
80
97
  end
81
98
 
99
+ name = name.to_sym
100
+
82
101
  unless cluster_instance = instance_hash[ name ]
83
102
  instance_hash[ name ] = cluster_instance = ::Module::Cluster::Cluster.new( instance, name )
84
103
  end
@@ -87,6 +106,35 @@ module ::Module::Cluster
87
106
 
88
107
  end
89
108
 
109
+ #######################
110
+ # self.has_cluster? #
111
+ #######################
112
+
113
+ ###
114
+ # @private
115
+ #
116
+ # Return whether cluster exists for instance.
117
+ #
118
+ # @param instance
119
+ # Instance for which cluster is being queried.
120
+ #
121
+ # @param name
122
+ # Name of cluster for instance.
123
+ #
124
+ # @return [true,false] Whether cluster exists for instance.
125
+ #
126
+ def self.has_cluster?( instance, name )
127
+
128
+ has_cluster = false
129
+
130
+ if instance_hash = @clusters[ instance ]
131
+ has_cluster = instance_hash.has_key?( name.to_sym )
132
+ end
133
+
134
+ return has_cluster
135
+
136
+ end
137
+
90
138
  ##############################
91
139
  # self.instance_controller #
92
140
  ##############################
@@ -185,7 +233,7 @@ module ::Module::Cluster
185
233
  def self.hook_cluster_events( instance, hooked_instance, event_context )
186
234
 
187
235
  requires_module_cluster_enable = false
188
-
236
+
189
237
  # Subclass hooks always cascade to the first subclass.
190
238
  # If it should casade for each subclass that has to be declared explicitly and will be handled below.
191
239
  unless event_context == :subclass
@@ -316,7 +364,7 @@ module ::Module::Cluster
316
364
 
317
365
  # if we have a block it runs last
318
366
  if this_block = this_frame.block
319
- this_frame.owner.module_exec( hooked_instance, & this_block )
367
+ instance.module_exec( hooked_instance, this_frame.owner, & this_block )
320
368
  end
321
369
 
322
370
  end
@@ -155,12 +155,14 @@ module ::Module::Cluster::Cluster::ClusterInterface
155
155
  hook_controller = @instance_controller.after_include_controller
156
156
 
157
157
  chain_proxy_instance = hook_controller.chain_proxy
158
+
159
+ chain_proxy_instance.cluster_name( @name ).context( *contexts )
158
160
 
159
161
  if block_given?
160
- hook_controller.action( & block )
162
+ chain_proxy_instance.action( & block )
161
163
  end
162
164
 
163
- return hook_controller.chain_proxy.cluster_name( @name ).context( *contexts )
165
+ return chain_proxy_instance
164
166
 
165
167
  end
166
168
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: module-cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-12 00:00:00.000000000 Z
12
+ date: 2012-07-17 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Provides hooks via :included, :extended, :append_features, :extend_object,
15
15
  :inherited. Define behavior at hooks via simple interface.