cascading-configuration-array 1.4.0 → 1.4.1
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/lib/cascading-configuration-array.rb +3 -0
- data/lib/cascading-configuration-array/CascadingConfiguration/Array.rb +2 -0
- data/lib/cascading-configuration-array/CascadingConfiguration/Array/AccessorDefinitionMethods.rb +33 -1
- data/lib/cascading-configuration-array/CascadingConfiguration/Array/Interface.rb +7 -7
- data/lib/cascading-configuration-array/CascadingConfiguration/Array/Interface/Instance.rb +22 -0
- data/spec/CascadingConfiguration/Array_spec.rb +145 -18
- metadata +3 -2
@@ -16,6 +16,8 @@ module CascadingConfiguration
|
|
16
16
|
module AccessorDefinitionMethods
|
17
17
|
end
|
18
18
|
module Interface
|
19
|
+
module Instance
|
20
|
+
end
|
19
21
|
end
|
20
22
|
module ObjectInstance
|
21
23
|
end
|
@@ -30,3 +32,4 @@ require_relative 'cascading-configuration-array/CascadingConfiguration/_private_
|
|
30
32
|
require_relative 'cascading-configuration-array/CascadingConfiguration/Array.rb'
|
31
33
|
require_relative 'cascading-configuration-array/CascadingConfiguration/Array/AccessorDefinitionMethods.rb'
|
32
34
|
require_relative 'cascading-configuration-array/CascadingConfiguration/Array/Interface.rb'
|
35
|
+
require_relative 'cascading-configuration-array/CascadingConfiguration/Array/Interface/Instance.rb'
|
@@ -14,6 +14,8 @@ module CascadingConfiguration::Array
|
|
14
14
|
class_or_module.extend_also_extends( CascadingConfiguration::Variable::EigenclassConfigurationChain )
|
15
15
|
end
|
16
16
|
|
17
|
+
include_cascades_extends( CascadingConfiguration::Array::Interface::Instance )
|
18
|
+
|
17
19
|
include_cascades_extends( CascadingConfiguration::Array )
|
18
20
|
|
19
21
|
prepend_module_include do |class_or_module|
|
data/lib/cascading-configuration-array/CascadingConfiguration/Array/AccessorDefinitionMethods.rb
CHANGED
@@ -114,7 +114,7 @@ module CascadingConfiguration::Array::AccessorDefinitionMethods
|
|
114
114
|
|
115
115
|
def define_instance_configuration_array_setter( configuration_name )
|
116
116
|
configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
|
117
|
-
|
117
|
+
accessor_instance_support.module_eval do
|
118
118
|
define_method( configuration_setter_name ) do |array|
|
119
119
|
composite_array = composite_array_for_cascading_configuration( configuration_name )
|
120
120
|
# we want the array to supplant existing config
|
@@ -132,6 +132,38 @@ module CascadingConfiguration::Array::AccessorDefinitionMethods
|
|
132
132
|
################################################
|
133
133
|
|
134
134
|
def define_instance_configuration_array_getter( configuration_name )
|
135
|
+
configuration_getter_name = configuration_name
|
136
|
+
accessor_instance_support.module_eval do
|
137
|
+
define_method( configuration_getter_name ) do
|
138
|
+
return composite_array_for_cascading_configuration( configuration_name )
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
##############################################
|
144
|
+
# define_object_configuration_array_setter #
|
145
|
+
##############################################
|
146
|
+
|
147
|
+
def define_object_configuration_array_setter( configuration_name )
|
148
|
+
configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
|
149
|
+
accessor_local_instance_support.module_eval do
|
150
|
+
define_method( configuration_setter_name ) do |array|
|
151
|
+
composite_array = composite_array_for_cascading_configuration( configuration_name )
|
152
|
+
# we want the array to supplant existing config
|
153
|
+
# clear the array (excludes everything explicitly)
|
154
|
+
composite_array.clear
|
155
|
+
# push array elements (removes anything excluded from exclude)
|
156
|
+
composite_array.push( *array )
|
157
|
+
return composite_array
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
##############################################
|
163
|
+
# define_object_configuration_array_getter #
|
164
|
+
##############################################
|
165
|
+
|
166
|
+
def define_object_configuration_array_getter( configuration_name )
|
135
167
|
configuration_getter_name = configuration_name
|
136
168
|
accessor_local_instance_support.module_eval do
|
137
169
|
define_method( configuration_getter_name ) do
|
@@ -51,19 +51,19 @@ module CascadingConfiguration::Array::Interface
|
|
51
51
|
CascadingConfiguration::Variable.cascade_local_instance( self )
|
52
52
|
end
|
53
53
|
|
54
|
-
|
55
|
-
#
|
56
|
-
|
54
|
+
#####################################
|
55
|
+
# attr_object_configuration_array #
|
56
|
+
#####################################
|
57
57
|
|
58
|
-
# defines configuration in present
|
58
|
+
# defines configuration in present instance
|
59
59
|
# configuration does not cascade
|
60
|
-
def
|
60
|
+
def attr_object_configuration_array( *property_names )
|
61
61
|
CascadingConfiguration::Variable.define_accessor_local_instance_support( self )
|
62
62
|
property_names.each do |this_property_name|
|
63
63
|
# define configuration setter
|
64
|
-
|
64
|
+
define_object_configuration_array_setter( this_property_name )
|
65
65
|
# define configuration getter
|
66
|
-
|
66
|
+
define_object_configuration_array_getter( this_property_name )
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
module CascadingConfiguration::Array::Interface::Instance
|
3
|
+
|
4
|
+
extend CascadingConfiguration::InternalModuleStub
|
5
|
+
|
6
|
+
#######################################
|
7
|
+
# attr_instance_configuration_array #
|
8
|
+
#######################################
|
9
|
+
|
10
|
+
# defines configuration in present class or module context
|
11
|
+
# configuration does not cascade
|
12
|
+
def attr_instance_configuration_array( *property_names )
|
13
|
+
property_names.each do |this_property_name|
|
14
|
+
# define configuration setter
|
15
|
+
define_instance_configuration_array_setter( this_property_name )
|
16
|
+
# define configuration getter
|
17
|
+
define_instance_configuration_array_getter( this_property_name )
|
18
|
+
end
|
19
|
+
return self
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -484,7 +484,7 @@ describe CascadingConfiguration::Array do
|
|
484
484
|
# attr_instance_configuration_array #
|
485
485
|
#######################################
|
486
486
|
|
487
|
-
it 'can define
|
487
|
+
it 'can define an instance configuration array, which will not cascade' do
|
488
488
|
|
489
489
|
# possibilities:
|
490
490
|
# * module extended with setting
|
@@ -501,13 +501,7 @@ 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 ==
|
505
|
-
attr_instance_configuration_array :configuration_setting
|
506
|
-
respond_to?( :configuration_setting ).should == true
|
507
|
-
configuration_setting.should == []
|
508
|
-
configuration_setting.push( :a_configuration )
|
509
|
-
configuration_setting.should == [ :a_configuration ]
|
510
|
-
instance_methods.include?( :configuration_setting ).should == false
|
504
|
+
respond_to?( :attr_instance_configuration_array ).should == false
|
511
505
|
instance_variables.empty?.should == true
|
512
506
|
# => including modules and classes get nothing
|
513
507
|
module SubmoduleIncluding
|
@@ -544,6 +538,139 @@ describe CascadingConfiguration::Array do
|
|
544
538
|
# => singleton gets attr_configuration and configurations
|
545
539
|
respond_to?( :attr_instance_configuration_array ).should == true
|
546
540
|
attr_instance_configuration_array :configuration_setting
|
541
|
+
respond_to?( :configuration_setting ).should == false
|
542
|
+
instance_methods.include?( :configuration_setting ).should == true
|
543
|
+
instance_variables.empty?.should == true
|
544
|
+
# => including modules and classes get attr_configuration and configurations
|
545
|
+
module SubmoduleIncluding
|
546
|
+
include CascadingConfiguration::Array::InstanceConfigurationMockModuleIncluded
|
547
|
+
instance_methods.include?( :configuration_setting ).should == true
|
548
|
+
respond_to?( :configuration_setting ).should == false
|
549
|
+
instance_methods.include?( :configuration_setting ).should == true
|
550
|
+
instance_variables.empty?.should == true
|
551
|
+
end
|
552
|
+
# => extending modules and classes get attr_configuration and configurations
|
553
|
+
module SubmoduleExtending
|
554
|
+
extend CascadingConfiguration::Array::InstanceConfigurationMockModuleIncluded
|
555
|
+
# if we're extended then we want to use the eigenclass ancestor chain
|
556
|
+
# - the first ancestor will be the extending module
|
557
|
+
# - the rest of the ancestors will be the extending module's include chain
|
558
|
+
respond_to?( :configuration_setting ).should == true
|
559
|
+
instance_methods.include?( :configuration_setting ).should == false
|
560
|
+
instance_variables.empty?.should == true
|
561
|
+
end
|
562
|
+
# => instances of including classes get configurations
|
563
|
+
class ClassIncluding
|
564
|
+
include CascadingConfiguration::Array::InstanceConfigurationMockModuleIncluded
|
565
|
+
instance_methods.include?( :configuration_setting ).should == true
|
566
|
+
respond_to?( :configuration_setting ).should == false
|
567
|
+
instance_variables.empty?.should == true
|
568
|
+
end
|
569
|
+
setting_class_including_instance = ClassIncluding.new
|
570
|
+
setting_class_including_instance.respond_to?( :configuration_setting ).should == true
|
571
|
+
setting_class_including_instance.instance_variables.empty?.should == true
|
572
|
+
# => instances of extending classes get nothing
|
573
|
+
class ClassExtending
|
574
|
+
extend CascadingConfiguration::Array::InstanceConfigurationMockModuleIncluded
|
575
|
+
instance_methods.include?( :configuration_setting ).should == false
|
576
|
+
respond_to?( :configuration_setting ).should == true
|
577
|
+
instance_variables.empty?.should == true
|
578
|
+
end
|
579
|
+
setting_class_including_instance = ClassExtending.new
|
580
|
+
setting_class_including_instance.respond_to?( :configuration_setting ).should == false
|
581
|
+
setting_class_including_instance.instance_variables.empty?.should == true
|
582
|
+
end
|
583
|
+
|
584
|
+
class CascadingConfiguration::Array::InstanceConfigurationMockClass
|
585
|
+
include CascadingConfiguration::Array::InstanceConfigurationMockModuleIncluded::SubmoduleIncluding
|
586
|
+
instance_methods.include?( :configuration_setting ).should == true
|
587
|
+
respond_to?( :configuration_setting ).should == false
|
588
|
+
instance_variables.empty?.should == true
|
589
|
+
end
|
590
|
+
object_instance_one = CascadingConfiguration::Array::InstanceConfigurationMockClass.new
|
591
|
+
object_instance_one.respond_to?( :configuration_setting ).should == true
|
592
|
+
object_instance_one.instance_variables.empty?.should == true
|
593
|
+
class CascadingConfiguration::Array::InstanceConfigurationMockClassSub1 < CascadingConfiguration::Array::InstanceConfigurationMockClass
|
594
|
+
instance_methods.include?( :configuration_setting ).should == true
|
595
|
+
respond_to?( :configuration_setting ).should == false
|
596
|
+
instance_variables.empty?.should == true
|
597
|
+
end
|
598
|
+
object_instance_two = CascadingConfiguration::Array::InstanceConfigurationMockClassSub1.new
|
599
|
+
object_instance_two.respond_to?( :configuration_setting ).should == true
|
600
|
+
object_instance_two.instance_variables.empty?.should == true
|
601
|
+
class CascadingConfiguration::Array::InstanceConfigurationMockClassSub2 < CascadingConfiguration::Array::InstanceConfigurationMockClassSub1
|
602
|
+
instance_methods.include?( :configuration_setting ).should == true
|
603
|
+
respond_to?( :configuration_setting ).should == false
|
604
|
+
instance_variables.empty?.should == true
|
605
|
+
end
|
606
|
+
|
607
|
+
end
|
608
|
+
|
609
|
+
|
610
|
+
#####################################
|
611
|
+
# attr_object_configuration_array #
|
612
|
+
#####################################
|
613
|
+
|
614
|
+
it 'can define an object configuration array, which will not cascade' do
|
615
|
+
|
616
|
+
# possibilities:
|
617
|
+
# * module extended with setting
|
618
|
+
# => singleton gets attr_configuration and configurations
|
619
|
+
# => including modules and classes get nothing
|
620
|
+
# => extending modules and classes get nothing
|
621
|
+
# => instances of including and extending classes get nothing
|
622
|
+
# * module included with setting
|
623
|
+
# => singleton gets attr_configuration and configurations
|
624
|
+
# => including modules and classes get attr_configuration and configurations
|
625
|
+
# => instances of including classes get configurations
|
626
|
+
# => extending modules and classes get attr_configuration and configurations
|
627
|
+
# => instances of extending classes get nothing
|
628
|
+
module CascadingConfiguration::Array::ObjectConfigurationMockModuleExtended
|
629
|
+
extend CascadingConfiguration::Array
|
630
|
+
# => singleton gets attr_configuration and configurations
|
631
|
+
respond_to?( :attr_object_configuration_array ).should == true
|
632
|
+
attr_object_configuration_array :configuration_setting
|
633
|
+
respond_to?( :configuration_setting ).should == true
|
634
|
+
configuration_setting.should == []
|
635
|
+
configuration_setting.push( :a_configuration )
|
636
|
+
configuration_setting.should == [ :a_configuration ]
|
637
|
+
instance_methods.include?( :configuration_setting ).should == false
|
638
|
+
instance_variables.empty?.should == true
|
639
|
+
# => including modules and classes get nothing
|
640
|
+
module SubmoduleIncluding
|
641
|
+
include CascadingConfiguration::Array::ObjectConfigurationMockModuleExtended
|
642
|
+
instance_methods.include?( :configuration_setting ).should == false
|
643
|
+
respond_to?( :configuration_setting ).should == false
|
644
|
+
instance_variables.empty?.should == true
|
645
|
+
end
|
646
|
+
# => extending modules and classes get nothing
|
647
|
+
module SubmoduleExtending
|
648
|
+
extend CascadingConfiguration::Array::ObjectConfigurationMockModuleExtended
|
649
|
+
instance_methods.include?( :configuration_setting ).should == false
|
650
|
+
respond_to?( :configuration_setting ).should == false
|
651
|
+
instance_variables.empty?.should == true
|
652
|
+
end
|
653
|
+
# => instances of including and extending classes get nothing
|
654
|
+
class ClassIncluding
|
655
|
+
include CascadingConfiguration::Array::ObjectConfigurationMockModuleExtended
|
656
|
+
instance_methods.include?( :configuration_setting ).should == false
|
657
|
+
respond_to?( :configuration_setting ).should == false
|
658
|
+
instance_variables.empty?.should == true
|
659
|
+
end
|
660
|
+
class ClassExtending
|
661
|
+
extend CascadingConfiguration::Array::ObjectConfigurationMockModuleExtended
|
662
|
+
instance_methods.include?( :configuration_setting ).should == false
|
663
|
+
respond_to?( :configuration_setting ).should == false
|
664
|
+
instance_variables.empty?.should == true
|
665
|
+
end
|
666
|
+
end
|
667
|
+
|
668
|
+
# * module included with setting
|
669
|
+
module CascadingConfiguration::Array::ObjectConfigurationMockModuleIncluded
|
670
|
+
include CascadingConfiguration::Array
|
671
|
+
# => singleton gets attr_configuration and configurations
|
672
|
+
respond_to?( :attr_object_configuration_array ).should == true
|
673
|
+
attr_object_configuration_array :configuration_setting
|
547
674
|
respond_to?( :configuration_setting ).should == true
|
548
675
|
configuration_setting.should == []
|
549
676
|
configuration_setting.push( :a_configuration )
|
@@ -552,7 +679,7 @@ describe CascadingConfiguration::Array do
|
|
552
679
|
instance_variables.empty?.should == true
|
553
680
|
# => including modules and classes get attr_configuration and configurations
|
554
681
|
module SubmoduleIncluding
|
555
|
-
include CascadingConfiguration::Array::
|
682
|
+
include CascadingConfiguration::Array::ObjectConfigurationMockModuleIncluded
|
556
683
|
instance_methods.include?( :configuration_setting ).should == false
|
557
684
|
respond_to?( :configuration_setting ).should == false
|
558
685
|
instance_methods.include?( :configuration_setting ).should == false
|
@@ -560,7 +687,7 @@ describe CascadingConfiguration::Array do
|
|
560
687
|
end
|
561
688
|
# => extending modules and classes get attr_configuration and configurations
|
562
689
|
module SubmoduleExtending
|
563
|
-
extend CascadingConfiguration::Array::
|
690
|
+
extend CascadingConfiguration::Array::ObjectConfigurationMockModuleIncluded
|
564
691
|
# if we're extended then we want to use the eigenclass ancestor chain
|
565
692
|
# - the first ancestor will be the extending module
|
566
693
|
# - the rest of the ancestors will be the extending module's include chain
|
@@ -570,7 +697,7 @@ describe CascadingConfiguration::Array do
|
|
570
697
|
end
|
571
698
|
# => instances of including classes get configurations
|
572
699
|
class ClassIncluding
|
573
|
-
include CascadingConfiguration::Array::
|
700
|
+
include CascadingConfiguration::Array::ObjectConfigurationMockModuleIncluded
|
574
701
|
instance_methods.include?( :configuration_setting ).should == false
|
575
702
|
respond_to?( :configuration_setting ).should == false
|
576
703
|
instance_variables.empty?.should == true
|
@@ -580,7 +707,7 @@ describe CascadingConfiguration::Array do
|
|
580
707
|
setting_class_including_instance.instance_variables.empty?.should == true
|
581
708
|
# => instances of extending classes get nothing
|
582
709
|
class ClassExtending
|
583
|
-
extend CascadingConfiguration::Array::
|
710
|
+
extend CascadingConfiguration::Array::ObjectConfigurationMockModuleIncluded
|
584
711
|
instance_methods.include?( :configuration_setting ).should == false
|
585
712
|
respond_to?( :configuration_setting ).should == false
|
586
713
|
instance_variables.empty?.should == true
|
@@ -590,24 +717,24 @@ describe CascadingConfiguration::Array do
|
|
590
717
|
setting_class_including_instance.instance_variables.empty?.should == true
|
591
718
|
end
|
592
719
|
|
593
|
-
class CascadingConfiguration::Array::
|
594
|
-
include CascadingConfiguration::Array::
|
720
|
+
class CascadingConfiguration::Array::ObjectConfigurationMockClass
|
721
|
+
include CascadingConfiguration::Array::ObjectConfigurationMockModuleIncluded::SubmoduleIncluding
|
595
722
|
instance_methods.include?( :configuration_setting ).should == false
|
596
723
|
respond_to?( :configuration_setting ).should == false
|
597
724
|
instance_variables.empty?.should == true
|
598
725
|
end
|
599
|
-
object_instance_one = CascadingConfiguration::Array::
|
726
|
+
object_instance_one = CascadingConfiguration::Array::ObjectConfigurationMockClass.new
|
600
727
|
object_instance_one.respond_to?( :configuration_setting ).should == false
|
601
728
|
object_instance_one.instance_variables.empty?.should == true
|
602
|
-
class CascadingConfiguration::Array::
|
729
|
+
class CascadingConfiguration::Array::ObjectConfigurationMockClassSub1 < CascadingConfiguration::Array::ObjectConfigurationMockClass
|
603
730
|
instance_methods.include?( :configuration_setting ).should == false
|
604
731
|
respond_to?( :configuration_setting ).should == false
|
605
732
|
instance_variables.empty?.should == true
|
606
733
|
end
|
607
|
-
object_instance_two = CascadingConfiguration::Array::
|
734
|
+
object_instance_two = CascadingConfiguration::Array::ObjectConfigurationMockClassSub1.new
|
608
735
|
object_instance_two.respond_to?( :configuration_setting ).should == false
|
609
736
|
object_instance_two.instance_variables.empty?.should == true
|
610
|
-
class CascadingConfiguration::Array::
|
737
|
+
class CascadingConfiguration::Array::ObjectConfigurationMockClassSub2 < CascadingConfiguration::Array::ObjectConfigurationMockClassSub1
|
611
738
|
instance_methods.include?( :configuration_setting ).should == false
|
612
739
|
respond_to?( :configuration_setting ).should == false
|
613
740
|
instance_variables.empty?.should == true
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 4
|
8
|
-
-
|
9
|
-
version: 1.4.
|
8
|
+
- 1
|
9
|
+
version: 1.4.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Asher
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- lib/cascading-configuration-array/CascadingConfiguration/_private_/CompositingArray.rb
|
56
56
|
- lib/cascading-configuration-array/CascadingConfiguration/_private_/LocalConfigurationArray.rb
|
57
57
|
- lib/cascading-configuration-array/CascadingConfiguration/Array/AccessorDefinitionMethods.rb
|
58
|
+
- lib/cascading-configuration-array/CascadingConfiguration/Array/Interface/Instance.rb
|
58
59
|
- lib/cascading-configuration-array/CascadingConfiguration/Array/Interface.rb
|
59
60
|
- lib/cascading-configuration-array/CascadingConfiguration/Array.rb
|
60
61
|
- lib/cascading-configuration-array/CascadingConfiguration/CompositingArray/Instance.rb
|