cascading-configuration-array 1.4.1 → 1.5.0

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.
Files changed (19) hide show
  1. data/lib/cascading-configuration-array/CascadingConfiguration/Array/Interface.rb +58 -21
  2. data/lib/cascading-configuration-array/CascadingConfiguration/Array.rb +6 -21
  3. data/lib/cascading-configuration-array/{CascadingConfiguration → _private_/CascadingConfiguration/Array/CompositingArray}/LocalConfigurationArray.rb +27 -1
  4. data/lib/cascading-configuration-array/_private_/CascadingConfiguration/Array/CompositingArray.rb +295 -0
  5. data/lib/cascading-configuration-array/_private_/CascadingConfiguration/Array/Interface/GettersSetters.rb +246 -0
  6. data/lib/cascading-configuration-array/_private_/CascadingConfiguration/Array/ModuleSupportMethods.rb +48 -0
  7. data/lib/cascading-configuration-array.rb +16 -23
  8. data/spec/CascadingConfiguration/Array_spec.rb +2 -3
  9. data/spec/{CascadingConfiguration → _private_/CascadingConfiguration/Array/CompositingArray}/LocalConfigurationArray_spec.rb +13 -13
  10. data/spec/_private_/CascadingConfiguration/Array/CompositingArray_spec.rb +569 -0
  11. metadata +10 -28
  12. data/lib/cascading-configuration-array/CascadingConfiguration/Array/AccessorDefinitionMethods.rb +0 -175
  13. data/lib/cascading-configuration-array/CascadingConfiguration/Array/Interface/Instance.rb +0 -22
  14. data/lib/cascading-configuration-array/CascadingConfiguration/CompositingArray/Instance.rb +0 -31
  15. data/lib/cascading-configuration-array/CascadingConfiguration/CompositingArray.rb +0 -215
  16. data/lib/cascading-configuration-array/CascadingConfiguration/_private_/CompositingArray.rb +0 -57
  17. data/lib/cascading-configuration-array/CascadingConfiguration/_private_/LocalConfigurationArray.rb +0 -26
  18. data/spec/CascadingConfiguration/Array/AccessorDefinitionMethods_spec.rb +0 -30
  19. data/spec/CascadingConfiguration/CompositingArray_spec.rb +0 -541
@@ -0,0 +1,246 @@
1
+
2
+ module CascadingConfiguration::Array::Interface::GettersSetters
3
+
4
+ ###################################
5
+ # define_cascading_array_setter #
6
+ ###################################
7
+
8
+ def define_cascading_array_setter( configuration_name )
9
+
10
+ configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
11
+
12
+ module_configuration_support_module = CascadingConfiguration::Variable.module_configuration_support_module( self )
13
+ instance_configuration_support_module = CascadingConfiguration::Variable.instance_configuration_support_module( self )
14
+
15
+ array_setter_proc = Proc.new do |array|
16
+
17
+ return CascadingConfiguration::Array.set_composite_array_for_cascading_configuration( self,
18
+ configuration_name,
19
+ array )
20
+
21
+ end
22
+
23
+ module_configuration_support_module.module_eval do
24
+ define_method( configuration_setter_name, & array_setter_proc )
25
+ end
26
+
27
+ instance_configuration_support_module.module_eval do
28
+ define_method( configuration_setter_name, & array_setter_proc )
29
+ end if instance_configuration_support_module
30
+
31
+ end
32
+
33
+ ###################################
34
+ # define_cascading_array_getter #
35
+ ###################################
36
+
37
+ def define_cascading_array_getter( configuration_name )
38
+
39
+ configuration_getter_name = configuration_name
40
+
41
+ module_configuration_support_module = CascadingConfiguration::Variable.module_configuration_support_module( self )
42
+ instance_configuration_support_module = CascadingConfiguration::Variable.instance_configuration_support_module( self )
43
+
44
+ array_getter_proc = Proc.new do
45
+
46
+ return CascadingConfiguration::Array.composite_array_for_cascading_configuration( self,
47
+ configuration_name )
48
+
49
+ end
50
+
51
+ module_configuration_support_module.module_eval do
52
+ define_method( configuration_getter_name, & array_getter_proc )
53
+ end
54
+
55
+ instance_configuration_support_module.module_eval do
56
+ define_method( configuration_getter_name, & array_getter_proc )
57
+ end if instance_configuration_support_module
58
+
59
+ end
60
+
61
+ #############################################
62
+ # define_class_configuration_array_setter #
63
+ #############################################
64
+
65
+ def define_class_configuration_array_setter( configuration_name )
66
+
67
+ configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
68
+
69
+ module_configuration_support_module = CascadingConfiguration::Variable.module_configuration_support_module( self )
70
+
71
+ module_configuration_support_module.module_eval do
72
+ define_method( configuration_setter_name ) do |array|
73
+
74
+ return CascadingConfiguration::Array.set_composite_array_for_cascading_configuration( self,
75
+ configuration_name,
76
+ array )
77
+ end
78
+ end
79
+
80
+ end
81
+
82
+ #############################################
83
+ # define_class_configuration_array_getter #
84
+ #############################################
85
+
86
+ def define_class_configuration_array_getter( configuration_name )
87
+
88
+ configuration_getter_name = configuration_name
89
+
90
+ module_configuration_support_module = CascadingConfiguration::Variable.module_configuration_support_module( self )
91
+
92
+ module_configuration_support_module.module_eval do
93
+ define_method( configuration_getter_name ) do
94
+
95
+ return CascadingConfiguration::Array.composite_array_for_cascading_configuration( self,
96
+ configuration_name )
97
+
98
+ end
99
+ end
100
+
101
+ end
102
+
103
+ #############################################
104
+ # define_local_configuration_array_setter #
105
+ #############################################
106
+
107
+ def define_local_configuration_array_setter( configuration_name )
108
+
109
+ configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
110
+
111
+ instance_configuration_support_module = CascadingConfiguration::Variable.instance_configuration_support_module( self )
112
+ local_instance_configuration_support_module = CascadingConfiguration::Variable.local_instance_configuration_support_module( self )
113
+
114
+ local_setter_proc = Proc.new do |array|
115
+
116
+ return CascadingConfiguration::Array.set_composite_array_for_cascading_configuration( self,
117
+ configuration_name,
118
+ array )
119
+
120
+ end
121
+
122
+ instance_configuration_support_module.module_eval do
123
+ define_method( configuration_setter_name, & local_setter_proc )
124
+ end if instance_configuration_support_module
125
+
126
+ local_instance_configuration_support_module.module_eval do
127
+ define_method( configuration_setter_name, & local_setter_proc )
128
+ end
129
+
130
+ end
131
+
132
+ #############################################
133
+ # define_local_configuration_array_getter #
134
+ #############################################
135
+
136
+ def define_local_configuration_array_getter( configuration_name )
137
+
138
+ configuration_getter_name = configuration_name
139
+
140
+ instance_configuration_support_module = CascadingConfiguration::Variable.instance_configuration_support_module( self )
141
+
142
+ local_instance_configuration_support_module = CascadingConfiguration::Variable.local_instance_configuration_support_module( self )
143
+
144
+ local_getter_proc = Proc.new do
145
+
146
+ return CascadingConfiguration::Array.composite_array_for_cascading_configuration( self,
147
+ configuration_name )
148
+
149
+ end
150
+
151
+ instance_configuration_support_module.module_eval do
152
+ define_method( configuration_getter_name, & local_getter_proc )
153
+ end if instance_configuration_support_module
154
+
155
+ local_instance_configuration_support_module.module_eval do
156
+ define_method( configuration_getter_name, & local_getter_proc )
157
+ end
158
+
159
+ end
160
+
161
+ ################################################
162
+ # define_instance_configuration_array_setter #
163
+ ################################################
164
+
165
+ def define_instance_configuration_array_setter( configuration_name )
166
+
167
+ configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
168
+
169
+ instance_configuration_support_module = CascadingConfiguration::Variable.instance_configuration_support_module( self )
170
+
171
+ instance_configuration_support_module.module_eval do
172
+ define_method( configuration_setter_name ) do |array|
173
+
174
+ return CascadingConfiguration::Array.set_composite_array_for_cascading_configuration( self,
175
+ configuration_name,
176
+ array )
177
+ end
178
+ end
179
+
180
+ end
181
+
182
+ ################################################
183
+ # define_instance_configuration_array_getter #
184
+ ################################################
185
+
186
+ def define_instance_configuration_array_getter( configuration_name )
187
+
188
+ configuration_getter_name = configuration_name
189
+
190
+ instance_configuration_support_module = CascadingConfiguration::Variable.instance_configuration_support_module( self )
191
+
192
+ instance_configuration_support_module.module_eval do
193
+ define_method( configuration_getter_name ) do
194
+
195
+ return CascadingConfiguration::Array.composite_array_for_cascading_configuration( self,
196
+ configuration_name )
197
+
198
+ end
199
+ end
200
+
201
+ end
202
+
203
+ ##############################################
204
+ # define_object_configuration_array_setter #
205
+ ##############################################
206
+
207
+ def define_object_configuration_array_setter( configuration_name )
208
+
209
+ configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
210
+
211
+ local_instance_configuration_support_module = CascadingConfiguration::Variable.local_instance_configuration_support_module( self )
212
+
213
+ local_instance_configuration_support_module.module_eval do
214
+ define_method( configuration_setter_name ) do |array|
215
+
216
+ return CascadingConfiguration::Array.set_composite_array_for_cascading_configuration( self,
217
+ configuration_name,
218
+ array )
219
+
220
+ end
221
+ end
222
+
223
+ end
224
+
225
+ ##############################################
226
+ # define_object_configuration_array_getter #
227
+ ##############################################
228
+
229
+ def define_object_configuration_array_getter( configuration_name )
230
+
231
+ configuration_getter_name = configuration_name
232
+
233
+ local_instance_configuration_support_module = CascadingConfiguration::Variable.local_instance_configuration_support_module( self )
234
+
235
+ local_instance_configuration_support_module.module_eval do
236
+ define_method( configuration_getter_name ) do
237
+
238
+ return CascadingConfiguration::Array.composite_array_for_cascading_configuration( self,
239
+ configuration_name )
240
+
241
+ end
242
+ end
243
+
244
+ end
245
+
246
+ end
@@ -0,0 +1,48 @@
1
+
2
+ module CascadingConfiguration::Array::ModuleSupportMethods
3
+
4
+ #################################################
5
+ # composite_array_for_cascading_configuration #
6
+ #################################################
7
+
8
+ def composite_array_for_cascading_configuration( configuration_instance, configuration_name )
9
+
10
+ composite_array = nil
11
+ for_instance = false
12
+
13
+ this_object_module_support = CascadingConfiguration::Variable.module_configuration_support_module( configuration_instance )
14
+ if ! this_object_module_support and ! configuration_instance.is_a?( Module )
15
+ this_object_module_support = CascadingConfiguration::Variable.module_configuration_support_module( configuration_instance.class )
16
+ for_instance = true
17
+ end
18
+
19
+ if this_object_module_support.has_configuration_variable?( configuration_name, for_instance )
20
+ composite_array = this_object_module_support.get_configuration_variable( configuration_name, for_instance )
21
+ else
22
+ composite_array = ::CascadingConfiguration::Array::CompositingArray.new( configuration_instance, configuration_name )
23
+ end
24
+
25
+ return composite_array
26
+
27
+ end
28
+
29
+ #####################################################
30
+ # set_composite_array_for_cascading_configuration #
31
+ #####################################################
32
+
33
+ def set_composite_array_for_cascading_configuration( configuration_instance, configuration_name, array )
34
+
35
+ composite_array = composite_array_for_cascading_configuration( configuration_instance, configuration_name )
36
+
37
+ # we want the array to supplant existing config
38
+ # clear the array (excludes everything explicitly)
39
+ composite_array.clear
40
+
41
+ # push array elements (removes anything excluded from exclude)
42
+ composite_array.push( *array )
43
+
44
+ return composite_array
45
+
46
+ end
47
+
48
+ end
@@ -1,35 +1,28 @@
1
1
 
2
- if $cascading_configuration_development
3
- require_relative '../../variable/lib/cascading-configuration-variable.rb'
4
- else
5
- require 'cascading-configuration-variable'
6
- end
2
+ require 'cascading-configuration-variable'
3
+ #require_relative '../../variable/lib/cascading-configuration-variable.rb'
7
4
 
8
5
  module CascadingConfiguration
9
- class CompositingArray < Array
10
- module Instance
11
- end
12
- end
13
- class LocalConfigurationArray < Array
14
- end
15
6
  module Array
16
- module AccessorDefinitionMethods
7
+ class CompositingArray < ::Array
8
+ class LocalConfigurationArray < ::Array
9
+ end
10
+ end
11
+ module ModuleSupportMethods
17
12
  end
18
13
  module Interface
19
- module Instance
14
+ module GettersSetters
20
15
  end
21
16
  end
22
- module ObjectInstance
23
- end
24
17
  end
25
18
  end
26
19
 
27
- require_relative 'cascading-configuration-array/CascadingConfiguration/CompositingArray.rb'
28
- require_relative 'cascading-configuration-array/CascadingConfiguration/_private_/CompositingArray.rb'
29
- require_relative 'cascading-configuration-array/CascadingConfiguration/CompositingArray/Instance.rb'
30
- require_relative 'cascading-configuration-array/CascadingConfiguration/LocalConfigurationArray.rb'
31
- require_relative 'cascading-configuration-array/CascadingConfiguration/_private_/LocalConfigurationArray.rb'
32
- require_relative 'cascading-configuration-array/CascadingConfiguration/Array.rb'
33
- require_relative 'cascading-configuration-array/CascadingConfiguration/Array/AccessorDefinitionMethods.rb'
20
+ require_relative 'cascading-configuration-array/_private_/CascadingConfiguration/Array/CompositingArray/LocalConfigurationArray.rb'
21
+ require_relative 'cascading-configuration-array/_private_/CascadingConfiguration/Array/CompositingArray.rb'
22
+ require_relative 'cascading-configuration-array/_private_/CascadingConfiguration/Array/Interface/GettersSetters.rb'
23
+ require_relative 'cascading-configuration-array/_private_/CascadingConfiguration/Array/ModuleSupportMethods.rb'
24
+
34
25
  require_relative 'cascading-configuration-array/CascadingConfiguration/Array/Interface.rb'
35
- require_relative 'cascading-configuration-array/CascadingConfiguration/Array/Interface/Instance.rb'
26
+ require_relative 'cascading-configuration-array/CascadingConfiguration/Array.rb'
27
+
28
+
@@ -420,7 +420,7 @@ describe CascadingConfiguration::Array do
420
420
  module SubmoduleIncluding
421
421
  include CascadingConfiguration::Array::LocalConfigurationMockModuleIncluded
422
422
  instance_methods.include?( :configuration_setting ).should == true
423
- respond_to?( :configuration_setting ).should == true
423
+ respond_to?( :configuration_setting ).should == false
424
424
  instance_variables.empty?.should == true
425
425
  end
426
426
  # => extending modules and classes get attr_configuration and configurations
@@ -437,7 +437,7 @@ describe CascadingConfiguration::Array do
437
437
  class ClassIncluding
438
438
  include CascadingConfiguration::Array::LocalConfigurationMockModuleIncluded
439
439
  instance_methods.include?( :configuration_setting ).should == true
440
- respond_to?( :configuration_setting ).should == true
440
+ respond_to?( :configuration_setting ).should == false
441
441
  instance_variables.empty?.should == true
442
442
  end
443
443
  setting_class_including_instance = ClassIncluding.new
@@ -501,7 +501,6 @@ describe CascadingConfiguration::Array do
501
501
  module CascadingConfiguration::Array::InstanceConfigurationMockModuleExtended
502
502
  extend CascadingConfiguration::Array
503
503
  # => singleton gets attr_configuration and configurations
504
- respond_to?( :attr_instance_configuration_array ).should == false
505
504
  instance_variables.empty?.should == true
506
505
  # => including modules and classes get nothing
507
506
  module SubmoduleIncluding
@@ -1,14 +1,14 @@
1
1
 
2
- require_relative '../../lib/cascading-configuration-array.rb'
2
+ require_relative '../../../../../lib/cascading-configuration-array.rb'
3
3
 
4
- describe CascadingConfiguration::LocalConfigurationArray do
4
+ describe CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray do
5
5
 
6
6
  #########
7
7
  # []= #
8
8
  #########
9
9
 
10
10
  it 'can add elements' do
11
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
11
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
12
12
  array_instance[0] = :some_setting
13
13
  array_instance.should == [ :some_setting ]
14
14
  array_instance.exclude_array.include?( :some_setting ).should == false
@@ -22,7 +22,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
22
22
  ########
23
23
 
24
24
  it 'can add elements' do
25
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
25
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
26
26
  array_instance << :some_setting
27
27
  array_instance.should == [ :some_setting ]
28
28
  array_instance.exclude_array.include?( :some_setting ).should == false
@@ -36,7 +36,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
36
36
  #######
37
37
 
38
38
  it 'can add elements' do
39
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
39
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
40
40
  array_instance += [ :some_setting ]
41
41
  array_instance.should == [ :some_setting ]
42
42
  array_instance.exclude_array.include?( :some_setting ).should == false
@@ -50,7 +50,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
50
50
  ##########
51
51
 
52
52
  it 'can add elements' do
53
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
53
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
54
54
  array_instance.push( :some_setting )
55
55
  array_instance.should == [ :some_setting ]
56
56
  array_instance.exclude_array.include?( :some_setting ).should == false
@@ -64,7 +64,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
64
64
  ############
65
65
 
66
66
  it 'can concat arrays' do
67
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
67
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
68
68
  array_instance.concat( [ :some_setting ] )
69
69
  array_instance.should == [ :some_setting ]
70
70
  array_instance.exclude_array.include?( :some_setting ).should == false
@@ -78,7 +78,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
78
78
  #######
79
79
 
80
80
  it 'can exclude elements' do
81
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
81
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
82
82
  array_instance += [ :some_setting, :other_setting ]
83
83
  array_instance -= [ :other_setting ]
84
84
  array_instance.should == [ :some_setting ]
@@ -93,7 +93,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
93
93
  ############
94
94
 
95
95
  it 'can exclude elements' do
96
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
96
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
97
97
  array_instance += [ :some_setting, :other_setting ]
98
98
  array_instance.delete( :other_setting )
99
99
  array_instance.should == [ :some_setting ]
@@ -108,7 +108,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
108
108
  #########
109
109
 
110
110
  it 'can pop the final element' do
111
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
111
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
112
112
  array_instance += [ :other_setting, :some_setting ]
113
113
  array_instance.pop.should == :some_setting
114
114
  array_instance.should == [ :other_setting ]
@@ -120,7 +120,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
120
120
  ###########
121
121
 
122
122
  it 'can shift the first element' do
123
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
123
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
124
124
  array_instance += [ :other_setting, :some_setting ]
125
125
  array_instance.shift.should == :other_setting
126
126
  array_instance.should == [ :some_setting ]
@@ -132,7 +132,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
132
132
  ############
133
133
 
134
134
  it 'can slice elements' do
135
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
135
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
136
136
  array_instance += [ :other_setting, :some_setting ]
137
137
  array_instance.slice!( 0, 1 ).should == [ :other_setting ]
138
138
  array_instance.should == [ :some_setting ]
@@ -144,7 +144,7 @@ describe CascadingConfiguration::LocalConfigurationArray do
144
144
  ###########
145
145
 
146
146
  it 'can clear, causing present elements to be excluded' do
147
- array_instance = CascadingConfiguration::LocalConfigurationArray.new
147
+ array_instance = CascadingConfiguration::Array::CompositingArray::LocalConfigurationArray.new
148
148
  array_instance += [ :some_setting, :other_setting ]
149
149
  array_instance.clear
150
150
  array_instance.should == []