module-cluster 1.3.2 → 1.3.3
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/README.md +29 -0
- data/README.rdoc +23 -0
- data/lib/module-cluster.rb +24 -2
- data/lib/module-cluster/ModuleCluster.rb +2 -1
- data/lib/module-cluster/ModuleCluster/CascadeFeatures.rb +65 -42
- data/lib/module-cluster/ModuleCluster/ClusterStack.rb +5 -95
- data/lib/module-cluster/ModuleCluster/ClusterStack/Block.rb +9 -0
- data/lib/module-cluster/ModuleCluster/ClusterStack/Block/Class.rb +36 -0
- data/lib/module-cluster/ModuleCluster/ClusterStack/Block/Module.rb +36 -0
- data/lib/module-cluster/ModuleCluster/ClusterStack/Extends.rb +29 -0
- data/lib/module-cluster/ModuleCluster/ClusterStack/Includes.rb +28 -0
- data/lib/module-cluster/ModuleCluster/ClusterStack/PrependsExtends.rb +28 -0
- data/lib/module-cluster/ModuleCluster/ClusterStack/PrependsIncludes.rb +28 -0
- data/lib/module-cluster/ModuleCluster/Define/Block.rb +6 -0
- data/lib/module-cluster/ModuleCluster/Define/Block/Class.rb +54 -0
- data/lib/module-cluster/ModuleCluster/Define/Block/ClassOrModule.rb +61 -0
- data/lib/module-cluster/ModuleCluster/Define/Block/Module.rb +54 -0
- data/lib/module-cluster/ModuleCluster/Define/Cluster.rb +1 -0
- metadata +13 -3
- data/lib/module-cluster/ModuleCluster/Define/DedoubleAncestors.rb +0 -22
data/README.md
CHANGED
@@ -35,6 +35,25 @@ module SomeModule
|
|
35
35
|
end
|
36
36
|
```
|
37
37
|
|
38
|
+
Additionally, all methods accept a block that returns one or more modules; the modules will be added *after* any modules specified in the parameters:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
module SomeModule
|
42
|
+
include ModuleCluster
|
43
|
+
include_also_includes( SomeOtherModule ) do
|
44
|
+
AnotherModule
|
45
|
+
end
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
49
|
+
Blocks can be used to return dynamically-determined modules at runtime.
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
class_or_module.include_or_extend_cascades_prepending_extends do
|
53
|
+
method_that_returns_one_or_more_modules
|
54
|
+
end
|
55
|
+
```
|
56
|
+
|
38
57
|
Calls to the various functions are cumulative and stack in the order called. This permits multiple calls, whether subsequently or otherwise.
|
39
58
|
|
40
59
|
# Methods #
|
@@ -123,6 +142,16 @@ Cascade to module methods (does not cascade to classes):
|
|
123
142
|
* include_or_extend_cascades_to_module_prepending_extends
|
124
143
|
* include_or_extend_cascades_to_module_prepending_includes_and_extends
|
125
144
|
|
145
|
+
Block methods (used for nesting declarations, for instance to apply cascades only after first module/class):
|
146
|
+
|
147
|
+
```ruby
|
148
|
+
prepend_module_include do |class_or_module|
|
149
|
+
class_or_module.include_or_extend_cascades_prepending_extends do
|
150
|
+
method_that_returns_one_or_more_modules
|
151
|
+
end
|
152
|
+
end
|
153
|
+
```
|
154
|
+
|
126
155
|
# License #
|
127
156
|
|
128
157
|
(The MIT License)
|
data/README.rdoc
CHANGED
@@ -31,6 +31,21 @@ module SomeModule
|
|
31
31
|
include_also_includes( SomeOtherModule )
|
32
32
|
end
|
33
33
|
|
34
|
+
Additionally, all methods accept a block that returns one or more modules; the modules will be added *after* any modules specified in the parameters:
|
35
|
+
|
36
|
+
module SomeModule
|
37
|
+
include ModuleCluster
|
38
|
+
include_also_includes( SomeOtherModule ) do
|
39
|
+
AnotherModule
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
Blocks can be used to return dynamically-determined modules at runtime.
|
44
|
+
|
45
|
+
class_or_module.include_or_extend_cascades_prepending_extends do
|
46
|
+
method_that_returns_one_or_more_modules
|
47
|
+
end
|
48
|
+
|
34
49
|
Calls to the various functions are cumulative and stack in the order called. This permits multiple calls, whether subsequently or otherwise.
|
35
50
|
|
36
51
|
== Methods
|
@@ -119,6 +134,14 @@ Cascade to module methods (does not cascade to classes):
|
|
119
134
|
* include_or_extend_cascades_to_module_prepending_extends
|
120
135
|
* include_or_extend_cascades_to_module_prepending_includes_and_extends
|
121
136
|
|
137
|
+
Block methods (used for nesting declarations, for instance to apply cascades only after first module/class, or for dynamic declarations):
|
138
|
+
|
139
|
+
prepend_module_include do |class_or_module|
|
140
|
+
class_or_module.include_or_extend_cascades_prepending_extends do
|
141
|
+
method_that_returns_one_or_more_modules
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
122
145
|
== License
|
123
146
|
|
124
147
|
(The MIT License)
|
data/lib/module-cluster.rb
CHANGED
@@ -1,11 +1,23 @@
|
|
1
1
|
|
2
2
|
module ModuleCluster
|
3
3
|
class ClusterStack
|
4
|
+
module Block
|
5
|
+
module Class
|
6
|
+
end
|
7
|
+
module Module
|
8
|
+
end
|
9
|
+
end
|
4
10
|
end
|
5
11
|
module CascadeFeatures
|
6
12
|
end
|
7
13
|
module Define
|
8
|
-
module
|
14
|
+
module Block
|
15
|
+
module Class
|
16
|
+
end
|
17
|
+
module Module
|
18
|
+
end
|
19
|
+
module ClassOrModule
|
20
|
+
end
|
9
21
|
end
|
10
22
|
module ClusterStack
|
11
23
|
end
|
@@ -23,14 +35,24 @@ module ModuleCluster
|
|
23
35
|
end
|
24
36
|
|
25
37
|
require_relative 'module-cluster/ModuleCluster/CascadeFeatures.rb'
|
26
|
-
require_relative 'module-cluster/ModuleCluster/Define/DedoubleAncestors.rb'
|
27
38
|
require_relative 'module-cluster/ModuleCluster/ExtendForCascade.rb'
|
28
39
|
require_relative 'module-cluster/ModuleCluster/Define/ClusterStack.rb'
|
40
|
+
require_relative 'module-cluster/ModuleCluster/Define/Block/Class.rb'
|
41
|
+
require_relative 'module-cluster/ModuleCluster/Define/Block/Module.rb'
|
42
|
+
require_relative 'module-cluster/ModuleCluster/Define/Block/ClassOrModule.rb'
|
43
|
+
require_relative 'module-cluster/ModuleCluster/Define/Block.rb'
|
29
44
|
require_relative 'module-cluster/ModuleCluster/Define/Cluster.rb'
|
30
45
|
require_relative 'module-cluster/ModuleCluster/Define/ClusterCascades.rb'
|
31
46
|
require_relative 'module-cluster/ModuleCluster/Define/ClusterCascadesToClass.rb'
|
32
47
|
require_relative 'module-cluster/ModuleCluster/Define/ClusterCascadesToModule.rb'
|
33
48
|
require_relative 'module-cluster/ModuleCluster/Define/Deprecated.rb'
|
49
|
+
require_relative 'module-cluster/ModuleCluster/ClusterStack/Includes.rb'
|
50
|
+
require_relative 'module-cluster/ModuleCluster/ClusterStack/Extends.rb'
|
51
|
+
require_relative 'module-cluster/ModuleCluster/ClusterStack/PrependsIncludes.rb'
|
52
|
+
require_relative 'module-cluster/ModuleCluster/ClusterStack/PrependsExtends.rb'
|
53
|
+
require_relative 'module-cluster/ModuleCluster/ClusterStack/Block/Class.rb'
|
54
|
+
require_relative 'module-cluster/ModuleCluster/ClusterStack/Block/Module.rb'
|
55
|
+
require_relative 'module-cluster/ModuleCluster/ClusterStack/Block.rb'
|
34
56
|
require_relative 'module-cluster/ModuleCluster/ClusterStack.rb'
|
35
57
|
require_relative 'module-cluster/ModuleCluster.rb'
|
36
58
|
|
@@ -3,11 +3,12 @@ module ModuleCluster
|
|
3
3
|
|
4
4
|
extend ModuleCluster::ExtendForCascade
|
5
5
|
|
6
|
+
include ModuleCluster::Define::Block
|
6
7
|
include ModuleCluster::Define::Cluster
|
7
8
|
include ModuleCluster::Define::ClusterCascades
|
8
9
|
include ModuleCluster::Define::ClusterCascadesToClass
|
9
10
|
include ModuleCluster::Define::ClusterCascadesToModule
|
10
11
|
|
11
12
|
include ModuleCluster::Define::Deprecated
|
12
|
-
|
13
|
+
|
13
14
|
end
|
@@ -13,58 +13,81 @@ module ModuleCluster::CascadeFeatures
|
|
13
13
|
includes_or_extends = nil
|
14
14
|
|
15
15
|
case runtime_includes_or_extends_block.arity
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
when 0
|
17
|
+
includes_or_extends = module_self.instance_eval( & runtime_includes_or_extends_block )
|
18
|
+
else
|
19
|
+
includes_or_extends = module_self.instance_exec( class_or_module, & runtime_includes_or_extends_block )
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
|
+
unless includes_or_extends.is_a?( Array )
|
23
|
+
includes_or_extends = [ includes_or_extends ]
|
24
|
+
end
|
25
|
+
|
22
26
|
return includes_or_extends
|
23
27
|
|
24
28
|
end
|
25
29
|
|
26
|
-
|
27
|
-
# self.
|
28
|
-
|
30
|
+
#######################################
|
31
|
+
# self.cascade_struct_for_set_stack #
|
32
|
+
#######################################
|
29
33
|
|
30
|
-
def self.
|
34
|
+
def self.cascade_struct_for_set_stack( module_self, class_or_module, set_stack )
|
31
35
|
|
32
36
|
includes = Array.new
|
33
37
|
extends = Array.new
|
34
38
|
cascades = Hash.new
|
35
39
|
|
36
40
|
set_stack.each do |this_set|
|
37
|
-
|
38
|
-
# get cascades
|
39
|
-
if this_set.dependency_module.should_cascade?( class_or_module )
|
40
|
-
cascades[ this_set.dependency_module ] ||= Hash.new
|
41
|
-
cascades[ this_set.dependency_module ][ this_set.method ] ||= Array.new
|
42
|
-
cascades[ this_set.dependency_module ][ this_set.method ].concat( this_set.modules )
|
43
|
-
end
|
44
|
-
|
45
|
-
# get runtime block
|
46
|
-
runtime_set = nil
|
47
|
-
if block = this_set.runtime_includes_or_extends_block
|
48
|
-
runtime_set = ModuleCluster::CascadeFeatures.get_runtime_includes_or_extends_from_block( module_self,
|
49
|
-
class_or_module,
|
50
|
-
this_set.include_or_extend,
|
51
|
-
block )
|
52
|
-
end
|
53
41
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
42
|
+
if this_set.is_a?( ModuleCluster::ClusterStack::Block::Set )
|
43
|
+
|
44
|
+
class_or_module.instance_eval do
|
45
|
+
extend( ModuleCluster )
|
46
|
+
end
|
47
|
+
|
48
|
+
case this_set.runtime_block.arity
|
49
|
+
when 0
|
50
|
+
module_self.instance_eval( & this_set.runtime_block )
|
51
|
+
else
|
52
|
+
module_self.instance_exec( class_or_module, & this_set.runtime_block )
|
53
|
+
end
|
54
|
+
|
55
|
+
else
|
56
|
+
|
57
|
+
# get cascades
|
58
|
+
if this_set.dependency_module.should_cascade?( class_or_module )
|
59
|
+
cascades[ this_set.dependency_module ] ||= Hash.new
|
60
|
+
cascades[ this_set.dependency_module ][ this_set.method ] ||= Array.new
|
61
|
+
cascades[ this_set.dependency_module ][ this_set.method ].concat( this_set.modules )
|
62
|
+
end
|
63
|
+
|
64
|
+
# get runtime block
|
65
|
+
runtime_set = nil
|
66
|
+
if block = this_set.runtime_includes_or_extends_block
|
67
|
+
runtime_set = ModuleCluster::CascadeFeatures.get_runtime_includes_or_extends_from_block( module_self,
|
68
|
+
class_or_module,
|
69
|
+
this_set.include_or_extend,
|
70
|
+
block )
|
71
|
+
cascades[ this_set.dependency_module ] ||= Hash.new
|
72
|
+
cascades[ this_set.dependency_module ][ this_set.method ] ||= Array.new
|
73
|
+
cascades[ this_set.dependency_module ][ this_set.method ].concat( runtime_set )
|
74
|
+
end
|
75
|
+
# get includes/extends
|
76
|
+
case this_set.include_or_extend
|
77
|
+
when :include
|
78
|
+
this_set.modules.each do |this_module|
|
79
|
+
if this_set.dependency_module.should_include_or_extend?( class_or_module )
|
80
|
+
includes.concat( this_set.modules )
|
81
|
+
end
|
82
|
+
end
|
83
|
+
includes.concat( runtime_set ) if runtime_set
|
84
|
+
when :extend
|
58
85
|
if this_set.dependency_module.should_include_or_extend?( class_or_module )
|
59
|
-
|
86
|
+
extends.concat( this_set.modules )
|
60
87
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
if this_set.dependency_module.should_include_or_extend?( class_or_module )
|
65
|
-
extends.concat( this_set.modules )
|
66
|
-
end
|
67
|
-
extends.concat( runtime_set ) if runtime_set
|
88
|
+
extends.concat( runtime_set ) if runtime_set
|
89
|
+
end
|
90
|
+
|
68
91
|
end
|
69
92
|
|
70
93
|
end
|
@@ -105,8 +128,8 @@ module ModuleCluster::CascadeFeatures
|
|
105
128
|
#####################
|
106
129
|
|
107
130
|
def append_features( class_or_module )
|
108
|
-
|
109
|
-
cascade_struct = ModuleCluster::CascadeFeatures.
|
131
|
+
|
132
|
+
cascade_struct = ModuleCluster::CascadeFeatures.cascade_struct_for_set_stack( self, class_or_module, cluster_stack.cascading_prepending_includes )
|
110
133
|
ModuleCluster::CascadeFeatures.cascade_features( class_or_module, cascade_struct )
|
111
134
|
|
112
135
|
super
|
@@ -121,7 +144,7 @@ module ModuleCluster::CascadeFeatures
|
|
121
144
|
|
122
145
|
super
|
123
146
|
|
124
|
-
cascade_struct = ModuleCluster::CascadeFeatures.
|
147
|
+
cascade_struct = ModuleCluster::CascadeFeatures.cascade_struct_for_set_stack( self, class_or_module, cluster_stack.cascading_includes )
|
125
148
|
ModuleCluster::CascadeFeatures.cascade_features( class_or_module, cascade_struct )
|
126
149
|
|
127
150
|
end
|
@@ -132,7 +155,7 @@ module ModuleCluster::CascadeFeatures
|
|
132
155
|
|
133
156
|
def extend_object( class_or_module )
|
134
157
|
|
135
|
-
cascade_struct = ModuleCluster::CascadeFeatures.
|
158
|
+
cascade_struct = ModuleCluster::CascadeFeatures.cascade_struct_for_set_stack( self, class_or_module, cluster_stack.cascading_prepending_extends )
|
136
159
|
ModuleCluster::CascadeFeatures.cascade_features( class_or_module, cascade_struct )
|
137
160
|
|
138
161
|
super
|
@@ -147,7 +170,7 @@ module ModuleCluster::CascadeFeatures
|
|
147
170
|
|
148
171
|
super
|
149
172
|
|
150
|
-
cascade_struct = ModuleCluster::CascadeFeatures.
|
173
|
+
cascade_struct = ModuleCluster::CascadeFeatures.cascade_struct_for_set_stack( self, class_or_module, cluster_stack.cascading_extends )
|
151
174
|
ModuleCluster::CascadeFeatures.cascade_features( class_or_module, cascade_struct )
|
152
175
|
|
153
176
|
end
|
@@ -3,100 +3,10 @@ class ModuleCluster::ClusterStack
|
|
3
3
|
|
4
4
|
Set = Struct.new( :dependency_module, :method, :include_or_extend, :modules, :runtime_includes_or_extends_block )
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
return @cascading_includes ||= Array.new
|
12
|
-
end
|
13
|
-
|
14
|
-
#######################
|
15
|
-
# cascading_extends #
|
16
|
-
#######################
|
17
|
-
|
18
|
-
def cascading_extends
|
19
|
-
return @cascading_extends ||= Array.new
|
20
|
-
end
|
21
|
-
|
22
|
-
###################################
|
23
|
-
# cascading_prepending_includes #
|
24
|
-
###################################
|
25
|
-
|
26
|
-
def cascading_prepending_includes
|
27
|
-
return @cascading_prepending_includes ||= Array.new
|
28
|
-
end
|
29
|
-
|
30
|
-
##################################
|
31
|
-
# cascading_prepending_extends #
|
32
|
-
##################################
|
33
|
-
|
34
|
-
def cascading_prepending_extends
|
35
|
-
return @cascading_prepending_extends ||= Array.new
|
36
|
-
end
|
37
|
-
|
38
|
-
######################
|
39
|
-
# include_includes #
|
40
|
-
######################
|
41
|
-
|
42
|
-
def include_includes( module_instance, method, includes, runtime_includes_block )
|
43
|
-
cascading_includes.push( Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
44
|
-
end
|
45
|
-
|
46
|
-
#####################
|
47
|
-
# include_extends #
|
48
|
-
#####################
|
49
|
-
|
50
|
-
def include_extends( module_instance, method, extends, runtime_extends_block )
|
51
|
-
cascading_includes.push( Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
52
|
-
end
|
53
|
-
|
54
|
-
#####################
|
55
|
-
# extend_includes #
|
56
|
-
#####################
|
6
|
+
include ModuleCluster::ClusterStack::Block
|
7
|
+
include ModuleCluster::ClusterStack::Includes
|
8
|
+
include ModuleCluster::ClusterStack::Extends
|
9
|
+
include ModuleCluster::ClusterStack::PrependsIncludes
|
10
|
+
include ModuleCluster::ClusterStack::PrependsExtends
|
57
11
|
|
58
|
-
def extend_includes( module_instance, method, includes, runtime_includes_block )
|
59
|
-
cascading_extends.push( Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
60
|
-
end
|
61
|
-
|
62
|
-
####################
|
63
|
-
# extend_extends #
|
64
|
-
####################
|
65
|
-
|
66
|
-
def extend_extends( module_instance, method, extends, runtime_extends_block )
|
67
|
-
cascading_extends.push( Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
68
|
-
end
|
69
|
-
|
70
|
-
###############################
|
71
|
-
# include_prepends_includes #
|
72
|
-
###############################
|
73
|
-
|
74
|
-
def include_prepends_includes( module_instance, method, includes, runtime_includes_block )
|
75
|
-
cascading_prepending_includes.push( Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
76
|
-
end
|
77
|
-
|
78
|
-
##############################
|
79
|
-
# include_prepends_extends #
|
80
|
-
##############################
|
81
|
-
|
82
|
-
def include_prepends_extends( module_instance, method, extends, runtime_extends_block )
|
83
|
-
cascading_prepending_includes.push( Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
84
|
-
end
|
85
|
-
|
86
|
-
##############################
|
87
|
-
# extend_prepends_includes #
|
88
|
-
##############################
|
89
|
-
|
90
|
-
def extend_prepends_includes( module_instance, method, includes, runtime_includes_block )
|
91
|
-
cascading_prepending_extends.push( Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
92
|
-
end
|
93
|
-
|
94
|
-
#############################
|
95
|
-
# extend_prepends_extends #
|
96
|
-
#############################
|
97
|
-
|
98
|
-
def extend_prepends_extends( module_instance, method, extends, runtime_extends_block )
|
99
|
-
cascading_prepending_extends.push( Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
100
|
-
end
|
101
|
-
|
102
12
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::ClusterStack::Block::Class
|
3
|
+
|
4
|
+
###################
|
5
|
+
# class_include #
|
6
|
+
###################
|
7
|
+
|
8
|
+
def class_include( runtime_block )
|
9
|
+
cascading_includes.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
10
|
+
end
|
11
|
+
|
12
|
+
##################
|
13
|
+
# class_extend #
|
14
|
+
##################
|
15
|
+
|
16
|
+
def class_extend( runtime_block )
|
17
|
+
cascading_extends.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
###########################
|
21
|
+
# prepend_class_include #
|
22
|
+
###########################
|
23
|
+
|
24
|
+
def prepend_class_include( runtime_block )
|
25
|
+
cascading_prepending_includes.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
26
|
+
end
|
27
|
+
|
28
|
+
##########################
|
29
|
+
# prepend_class_extend #
|
30
|
+
##########################
|
31
|
+
|
32
|
+
def prepend_class_extend( runtime_block )
|
33
|
+
cascading_prepending_extends.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::ClusterStack::Block::Module
|
3
|
+
|
4
|
+
####################
|
5
|
+
# module_include #
|
6
|
+
####################
|
7
|
+
|
8
|
+
def module_include( runtime_block )
|
9
|
+
cascading_includes.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
10
|
+
end
|
11
|
+
|
12
|
+
###################
|
13
|
+
# module_extend #
|
14
|
+
###################
|
15
|
+
|
16
|
+
def module_extend( runtime_block )
|
17
|
+
cascading_extends.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
############################
|
21
|
+
# prepend_module_include #
|
22
|
+
############################
|
23
|
+
|
24
|
+
def prepend_module_include( runtime_block )
|
25
|
+
cascading_prepending_includes.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
26
|
+
end
|
27
|
+
|
28
|
+
###########################
|
29
|
+
# prepend_module_extend #
|
30
|
+
###########################
|
31
|
+
|
32
|
+
def prepend_module_extend( runtime_block )
|
33
|
+
cascading_prepending_extends.push( ModuleCluster::ClusterStack::Block::Set.new( runtime_block ) )
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::ClusterStack::Extends
|
3
|
+
|
4
|
+
#######################
|
5
|
+
# cascading_extends #
|
6
|
+
#######################
|
7
|
+
|
8
|
+
def cascading_extends
|
9
|
+
return @cascading_extends ||= Array.new
|
10
|
+
end
|
11
|
+
|
12
|
+
#####################
|
13
|
+
# extend_includes #
|
14
|
+
#####################
|
15
|
+
|
16
|
+
def extend_includes( module_instance, method, includes, runtime_includes_block )
|
17
|
+
cascading_extends.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
####################
|
21
|
+
# extend_extends #
|
22
|
+
####################
|
23
|
+
|
24
|
+
def extend_extends( module_instance, method, extends, runtime_extends_block )
|
25
|
+
cascading_extends.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::ClusterStack::Includes
|
3
|
+
|
4
|
+
########################
|
5
|
+
# cascading_includes #
|
6
|
+
########################
|
7
|
+
|
8
|
+
def cascading_includes
|
9
|
+
return @cascading_includes ||= Array.new
|
10
|
+
end
|
11
|
+
|
12
|
+
######################
|
13
|
+
# include_includes #
|
14
|
+
######################
|
15
|
+
|
16
|
+
def include_includes( module_instance, method, includes, runtime_includes_block )
|
17
|
+
cascading_includes.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
#####################
|
21
|
+
# include_extends #
|
22
|
+
#####################
|
23
|
+
|
24
|
+
def include_extends( module_instance, method, extends, runtime_extends_block )
|
25
|
+
cascading_includes.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::ClusterStack::PrependsExtends
|
3
|
+
|
4
|
+
##################################
|
5
|
+
# cascading_prepending_extends #
|
6
|
+
##################################
|
7
|
+
|
8
|
+
def cascading_prepending_extends
|
9
|
+
return @cascading_prepending_extends ||= Array.new
|
10
|
+
end
|
11
|
+
|
12
|
+
##############################
|
13
|
+
# extend_prepends_includes #
|
14
|
+
##############################
|
15
|
+
|
16
|
+
def extend_prepends_includes( module_instance, method, includes, runtime_includes_block )
|
17
|
+
cascading_prepending_extends.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
#############################
|
21
|
+
# extend_prepends_extends #
|
22
|
+
#############################
|
23
|
+
|
24
|
+
def extend_prepends_extends( module_instance, method, extends, runtime_extends_block )
|
25
|
+
cascading_prepending_extends.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::ClusterStack::PrependsIncludes
|
3
|
+
|
4
|
+
###################################
|
5
|
+
# cascading_prepending_includes #
|
6
|
+
###################################
|
7
|
+
|
8
|
+
def cascading_prepending_includes
|
9
|
+
return @cascading_prepending_includes ||= Array.new
|
10
|
+
end
|
11
|
+
|
12
|
+
###############################
|
13
|
+
# include_prepends_includes #
|
14
|
+
###############################
|
15
|
+
|
16
|
+
def include_prepends_includes( module_instance, method, includes, runtime_includes_block )
|
17
|
+
cascading_prepending_includes.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :include, includes, runtime_includes_block ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
##############################
|
21
|
+
# include_prepends_extends #
|
22
|
+
##############################
|
23
|
+
|
24
|
+
def include_prepends_extends( module_instance, method, extends, runtime_extends_block )
|
25
|
+
cascading_prepending_includes.push( ModuleCluster::ClusterStack::Set.new( module_instance, method, :extend, extends, runtime_extends_block ) )
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::Define::Block::Class
|
3
|
+
|
4
|
+
###################
|
5
|
+
# class_include #
|
6
|
+
###################
|
7
|
+
|
8
|
+
def class_include( & runtime_block )
|
9
|
+
cluster_stack.class_include( runtime_block )
|
10
|
+
end
|
11
|
+
|
12
|
+
##################
|
13
|
+
# class_extend #
|
14
|
+
##################
|
15
|
+
|
16
|
+
def class_extend( & runtime_block )
|
17
|
+
cluster_stack.class_extend( runtime_block )
|
18
|
+
end
|
19
|
+
|
20
|
+
#############################
|
21
|
+
# class_include_or_extend #
|
22
|
+
#############################
|
23
|
+
|
24
|
+
def class_include_or_extend( & runtime_block )
|
25
|
+
class_include( & runtime_block )
|
26
|
+
class_extend( & runtime_block )
|
27
|
+
end
|
28
|
+
|
29
|
+
###########################
|
30
|
+
# prepend_class_include #
|
31
|
+
###########################
|
32
|
+
|
33
|
+
def prepend_class_include( & runtime_block )
|
34
|
+
cluster_stack.prepend_class_include( runtime_block )
|
35
|
+
end
|
36
|
+
|
37
|
+
##########################
|
38
|
+
# prepend_class_extend #
|
39
|
+
##########################
|
40
|
+
|
41
|
+
def prepend_class_extend( & runtime_block )
|
42
|
+
cluster_stack.prepend_class_extend( runtime_block )
|
43
|
+
end
|
44
|
+
|
45
|
+
#####################################
|
46
|
+
# prepend_class_include_or_extend #
|
47
|
+
#####################################
|
48
|
+
|
49
|
+
def prepend_class_include_or_extend( & runtime_block )
|
50
|
+
prepend_class_include( & runtime_block )
|
51
|
+
prepend_class_extend( & runtime_block )
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::Define::Block::ClassOrModule
|
3
|
+
|
4
|
+
include ModuleCluster::Define::Block::Class
|
5
|
+
include ModuleCluster::Define::Block::Module
|
6
|
+
|
7
|
+
#############################
|
8
|
+
# class_or_module_include #
|
9
|
+
#############################
|
10
|
+
|
11
|
+
def class_or_module_include( & runtime_block )
|
12
|
+
class_include( & runtime_block )
|
13
|
+
module_include( & runtime_block )
|
14
|
+
end
|
15
|
+
|
16
|
+
############################
|
17
|
+
# class_or_module_extend #
|
18
|
+
############################
|
19
|
+
|
20
|
+
def class_or_module_extend( & runtime_block )
|
21
|
+
class_extend( & runtime_block )
|
22
|
+
module_extend( & runtime_block )
|
23
|
+
end
|
24
|
+
|
25
|
+
#######################################
|
26
|
+
# class_or_module_include_or_extend #
|
27
|
+
#######################################
|
28
|
+
|
29
|
+
def class_or_module_include_or_extend( & runtime_block )
|
30
|
+
class_or_module_include( & runtime_block )
|
31
|
+
class_or_module_extend( & runtime_block )
|
32
|
+
end
|
33
|
+
|
34
|
+
#####################################
|
35
|
+
# prepend_class_or_module_include #
|
36
|
+
#####################################
|
37
|
+
|
38
|
+
def prepend_class_or_module_include( & runtime_block )
|
39
|
+
prepend_class_include( & runtime_block )
|
40
|
+
prepend_module_include( & runtime_block )
|
41
|
+
end
|
42
|
+
|
43
|
+
####################################
|
44
|
+
# prepend_class_or_module_extend #
|
45
|
+
####################################
|
46
|
+
|
47
|
+
def prepend_class_or_module_extend( & runtime_block )
|
48
|
+
prepend_class_extend( & runtime_block )
|
49
|
+
prepend_module_extend( & runtime_block )
|
50
|
+
end
|
51
|
+
|
52
|
+
###############################################
|
53
|
+
# prepend_class_or_module_include_or_extend #
|
54
|
+
###############################################
|
55
|
+
|
56
|
+
def prepend_class_or_module_include_or_extend( & runtime_block )
|
57
|
+
prepend_class_or_module_include( & runtime_block )
|
58
|
+
prepend_class_or_module_extend( & runtime_block )
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
|
2
|
+
module ModuleCluster::Define::Block::Module
|
3
|
+
|
4
|
+
####################
|
5
|
+
# module_include #
|
6
|
+
####################
|
7
|
+
|
8
|
+
def module_include( & runtime_block )
|
9
|
+
cluster_stack.module_include( runtime_block )
|
10
|
+
end
|
11
|
+
|
12
|
+
###################
|
13
|
+
# module_extend #
|
14
|
+
###################
|
15
|
+
|
16
|
+
def module_extend( & runtime_block )
|
17
|
+
cluster_stack.module_extend( runtime_block )
|
18
|
+
end
|
19
|
+
|
20
|
+
##############################
|
21
|
+
# module_include_or_extend #
|
22
|
+
##############################
|
23
|
+
|
24
|
+
def module_include_or_extend( & runtime_block )
|
25
|
+
module_include( & runtime_block )
|
26
|
+
module_extend( & runtime_block )
|
27
|
+
end
|
28
|
+
|
29
|
+
############################
|
30
|
+
# prepend_module_include #
|
31
|
+
############################
|
32
|
+
|
33
|
+
def prepend_module_include( & runtime_block )
|
34
|
+
cluster_stack.prepend_module_include( runtime_block )
|
35
|
+
end
|
36
|
+
|
37
|
+
###########################
|
38
|
+
# prepend_module_extend #
|
39
|
+
###########################
|
40
|
+
|
41
|
+
def prepend_module_extend( & runtime_block )
|
42
|
+
cluster_stack.prepend_module_extend( runtime_block )
|
43
|
+
end
|
44
|
+
|
45
|
+
######################################
|
46
|
+
# prepend_module_include_or_extend #
|
47
|
+
######################################
|
48
|
+
|
49
|
+
def prepend_module_include_or_extend( & runtime_block )
|
50
|
+
prepend_module_include( & runtime_block )
|
51
|
+
prepend_module_extend( & runtime_block )
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 1.3.
|
8
|
+
- 3
|
9
|
+
version: 1.3.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Asher
|
@@ -28,13 +28,23 @@ extra_rdoc_files: []
|
|
28
28
|
|
29
29
|
files:
|
30
30
|
- lib/module-cluster/ModuleCluster/CascadeFeatures.rb
|
31
|
+
- lib/module-cluster/ModuleCluster/ClusterStack/Block/Class.rb
|
32
|
+
- lib/module-cluster/ModuleCluster/ClusterStack/Block/Module.rb
|
33
|
+
- lib/module-cluster/ModuleCluster/ClusterStack/Block.rb
|
34
|
+
- lib/module-cluster/ModuleCluster/ClusterStack/Extends.rb
|
35
|
+
- lib/module-cluster/ModuleCluster/ClusterStack/Includes.rb
|
36
|
+
- lib/module-cluster/ModuleCluster/ClusterStack/PrependsExtends.rb
|
37
|
+
- lib/module-cluster/ModuleCluster/ClusterStack/PrependsIncludes.rb
|
31
38
|
- lib/module-cluster/ModuleCluster/ClusterStack.rb
|
39
|
+
- lib/module-cluster/ModuleCluster/Define/Block/Class.rb
|
40
|
+
- lib/module-cluster/ModuleCluster/Define/Block/ClassOrModule.rb
|
41
|
+
- lib/module-cluster/ModuleCluster/Define/Block/Module.rb
|
42
|
+
- lib/module-cluster/ModuleCluster/Define/Block.rb
|
32
43
|
- lib/module-cluster/ModuleCluster/Define/Cluster.rb
|
33
44
|
- lib/module-cluster/ModuleCluster/Define/ClusterCascades.rb
|
34
45
|
- lib/module-cluster/ModuleCluster/Define/ClusterCascadesToClass.rb
|
35
46
|
- lib/module-cluster/ModuleCluster/Define/ClusterCascadesToModule.rb
|
36
47
|
- lib/module-cluster/ModuleCluster/Define/ClusterStack.rb
|
37
|
-
- lib/module-cluster/ModuleCluster/Define/DedoubleAncestors.rb
|
38
48
|
- lib/module-cluster/ModuleCluster/Define/Deprecated.rb
|
39
49
|
- lib/module-cluster/ModuleCluster/ExtendForCascade.rb
|
40
50
|
- lib/module-cluster/ModuleCluster.rb
|
@@ -1,22 +0,0 @@
|
|
1
|
-
|
2
|
-
module ModuleCluster::Define::DedoubleAncestors
|
3
|
-
|
4
|
-
####################################
|
5
|
-
# dedouble_modules_for_ancestors #
|
6
|
-
####################################
|
7
|
-
|
8
|
-
def dedouble_modules_for_ancestors( include_or_extend, *modules )
|
9
|
-
|
10
|
-
case include_or_extend
|
11
|
-
when :include
|
12
|
-
modules -= ancestors
|
13
|
-
when :extend
|
14
|
-
eigenclass = class << self ; self ; end
|
15
|
-
modules -= eigenclass.ancestors
|
16
|
-
end
|
17
|
-
|
18
|
-
return modules
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|