cascading-configuration-hash 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.
@@ -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-hash/CascadingConfiguration/_private_/
30
32
  require_relative 'cascading-configuration-hash/CascadingConfiguration/Hash.rb'
31
33
  require_relative 'cascading-configuration-hash/CascadingConfiguration/Hash/AccessorDefinitionMethods.rb'
32
34
  require_relative 'cascading-configuration-hash/CascadingConfiguration/Hash/Interface.rb'
35
+ require_relative 'cascading-configuration-hash/CascadingConfiguration/Hash/Interface/Instance.rb'
@@ -15,6 +15,8 @@ module CascadingConfiguration::Hash
15
15
  class_or_module.extend_also_extends( CascadingConfiguration::Variable::EigenclassConfigurationChain )
16
16
  end
17
17
 
18
+ include_cascades_extends( CascadingConfiguration::Hash::Interface::Instance )
19
+
18
20
  include_cascades_extends( CascadingConfiguration::Hash )
19
21
 
20
22
  prepend_module_include do |class_or_module|
@@ -98,7 +98,7 @@ module CascadingConfiguration::Hash::AccessorDefinitionMethods
98
98
 
99
99
  def define_instance_configuration_hash_setter( configuration_name )
100
100
  configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
101
- accessor_local_instance_support.module_eval do
101
+ accessor_instance_support.module_eval do
102
102
  define_method( configuration_setter_name ) do |hash|
103
103
  # we want the hash to supplant existing config
104
104
  return composite_hash_for_cascading_configuration( configuration_name ).replace( hash )
@@ -106,11 +106,38 @@ module CascadingConfiguration::Hash::AccessorDefinitionMethods
106
106
  end
107
107
  end
108
108
 
109
- ############################################
109
+ ###############################################
110
110
  # define_instance_configuration_hash_getter #
111
- ############################################
111
+ ###############################################
112
112
 
113
113
  def define_instance_configuration_hash_getter( configuration_name )
114
+ configuration_getter_name = configuration_name
115
+ accessor_instance_support.module_eval do
116
+ define_method( configuration_getter_name ) do
117
+ return composite_hash_for_cascading_configuration( configuration_name )
118
+ end
119
+ end
120
+ end
121
+
122
+ #############################################
123
+ # define_object_configuration_hash_setter #
124
+ #############################################
125
+
126
+ def define_object_configuration_hash_setter( configuration_name )
127
+ configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
128
+ accessor_local_instance_support.module_eval do
129
+ define_method( configuration_setter_name ) do |hash|
130
+ # we want the hash to supplant existing config
131
+ return composite_hash_for_cascading_configuration( configuration_name ).replace( hash )
132
+ end
133
+ end
134
+ end
135
+
136
+ #############################################
137
+ # define_object_configuration_hash_getter #
138
+ #############################################
139
+
140
+ def define_object_configuration_hash_getter( configuration_name )
114
141
  configuration_getter_name = configuration_name
115
142
  accessor_local_instance_support.module_eval do
116
143
  define_method( configuration_getter_name ) do
@@ -68,22 +68,22 @@ module CascadingConfiguration::Hash::Interface
68
68
 
69
69
  end
70
70
 
71
- ######################################
72
- # attr_instance_configuration_hash #
73
- ######################################
71
+ ####################################
72
+ # attr_object_configuration_hash #
73
+ ####################################
74
74
 
75
75
  # defines configuration in present class or module context
76
76
  # configuration does not cascade
77
- def attr_instance_configuration_hash( *property_names, & compositing_block )
77
+ def attr_object_configuration_hash( *property_names, & compositing_block )
78
78
 
79
79
  CascadingConfiguration::Variable.define_accessor_local_instance_support( self )
80
80
 
81
81
  property_names.each do |this_property_name|
82
82
  accessor_module_support.set_compositing_proc( this_property_name, compositing_block ) if block_given?
83
83
  # define configuration setter
84
- define_instance_configuration_hash_setter( this_property_name )
84
+ define_object_configuration_hash_setter( this_property_name )
85
85
  # define configuration getter
86
- define_instance_configuration_hash_getter( this_property_name )
86
+ define_object_configuration_hash_getter( this_property_name )
87
87
  end
88
88
 
89
89
  return self
@@ -0,0 +1,26 @@
1
+
2
+ module CascadingConfiguration::Hash::Interface::Instance
3
+
4
+ extend CascadingConfiguration::InternalModuleStub
5
+
6
+ ######################################
7
+ # attr_instance_configuration_hash #
8
+ ######################################
9
+
10
+ # defines configuration in present class or module context
11
+ # configuration does not cascade
12
+ def attr_instance_configuration_hash( *property_names, & compositing_block )
13
+
14
+ property_names.each do |this_property_name|
15
+ accessor_module_support.set_compositing_proc( this_property_name, compositing_block ) if block_given?
16
+ # define configuration setter
17
+ define_instance_configuration_hash_setter( this_property_name )
18
+ # define configuration getter
19
+ define_instance_configuration_hash_getter( this_property_name )
20
+ end
21
+
22
+ return self
23
+
24
+ end
25
+
26
+ end
@@ -383,7 +383,7 @@ describe CascadingConfiguration::Hash do
383
383
  end
384
384
 
385
385
  object_instance_one = CascadingConfiguration::Hash::ClassConfigurationMockClass.new
386
- object_instance_one.respond_to?( :a_configuration ).should == false
386
+ object_instance_one.respond_to?( :configuration_setting ).should == false
387
387
  object_instance_one.instance_variables.empty?.should == true
388
388
 
389
389
  class CascadingConfiguration::Hash::ClassConfigurationMockClassSub1 < CascadingConfiguration::Hash::ClassConfigurationMockClass
@@ -397,7 +397,7 @@ describe CascadingConfiguration::Hash do
397
397
  end
398
398
 
399
399
  object_instance_two = CascadingConfiguration::Hash::ClassConfigurationMockClassSub1.new
400
- object_instance_two.respond_to?( :a_configuration ).should == false
400
+ object_instance_two.respond_to?( :configuration_setting ).should == false
401
401
 
402
402
  # change ancestor setting
403
403
  CascadingConfiguration::Hash::ClassConfigurationMockClass.configuration_setting[ :a_yet_unused_configuration ] = :some_value
@@ -561,7 +561,7 @@ describe CascadingConfiguration::Hash do
561
561
  end
562
562
 
563
563
  object_instance_one = CascadingConfiguration::Hash::LocalConfigurationMockClass.new
564
- object_instance_one.respond_to?( :a_configuration ).should == false
564
+ object_instance_one.respond_to?( :configuration_setting ).should == true
565
565
  object_instance_one.instance_variables.empty?.should == true
566
566
 
567
567
  class CascadingConfiguration::Hash::LocalConfigurationMockClassSub1 < CascadingConfiguration::Hash::LocalConfigurationMockClass
@@ -571,12 +571,11 @@ describe CascadingConfiguration::Hash do
571
571
  end
572
572
 
573
573
  object_instance_two = CascadingConfiguration::Hash::LocalConfigurationMockClassSub1.new
574
- object_instance_two.respond_to?( :a_configuration ).should == false
574
+ object_instance_two.respond_to?( :configuration_setting ).should == true
575
575
  object_instance_two.instance_variables.empty?.should == true
576
576
 
577
577
  end
578
578
 
579
-
580
579
  ######################################
581
580
  # attr_instance_configuration_hash #
582
581
  ######################################
@@ -598,12 +597,7 @@ describe CascadingConfiguration::Hash do
598
597
  module CascadingConfiguration::Hash::InstanceConfigurationMockModuleExtended
599
598
  extend CascadingConfiguration::Hash
600
599
  # => singleton gets attr_configuration and configurations
601
- respond_to?( :attr_instance_configuration_hash ).should == true
602
- attr_instance_configuration_hash :configuration_setting
603
- respond_to?( :configuration_setting ).should == true
604
- configuration_setting.should == {}
605
- self.configuration_setting[ :a_configuration ] = :some_value
606
- configuration_setting.should == { :a_configuration => :some_value }
600
+ respond_to?( :attr_instance_configuration_hash ).should == false
607
601
  instance_methods.include?( :configuration_setting ).should == false
608
602
  instance_variables.empty?.should == true
609
603
  # => including modules and classes get nothing
@@ -641,6 +635,134 @@ describe CascadingConfiguration::Hash do
641
635
  # => singleton gets attr_configuration and configurations
642
636
  respond_to?( :attr_instance_configuration_hash ).should == true
643
637
  attr_instance_configuration_hash :configuration_setting
638
+ respond_to?( :configuration_setting ).should == false
639
+ instance_methods.include?( :configuration_setting ).should == true
640
+ instance_variables.empty?.should == true
641
+ # => including modules and classes get attr_configuration and configurations
642
+ module SubmoduleIncluding
643
+ include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
644
+ instance_methods.include?( :configuration_setting ).should == true
645
+ respond_to?( :configuration_setting ).should == false
646
+ instance_variables.empty?.should == true
647
+ end
648
+ # => extending modules and classes get attr_configuration and configurations
649
+ module SubmoduleExtending
650
+ extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
651
+ # if we're extended then we want to use the eigenclass ancestor chain
652
+ # - the first ancestor will be the extending module
653
+ # - the rest of the ancestors will be the extending module's include chain
654
+ instance_methods.include?( :configuration_setting ).should == false
655
+ respond_to?( :configuration_setting ).should == true
656
+ instance_variables.empty?.should == true
657
+ end
658
+ # => instances of including classes get configurations
659
+ class ClassIncluding
660
+ include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
661
+ instance_methods.include?( :configuration_setting ).should == true
662
+ respond_to?( :configuration_setting ).should == false
663
+ instance_variables.empty?.should == true
664
+ end
665
+ setting_class_including_instance = ClassIncluding.new
666
+ setting_class_including_instance.respond_to?( :configuration_setting ).should == true
667
+ setting_class_including_instance.instance_variables.empty?.should == true
668
+ class ClassExtending
669
+ extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
670
+ instance_methods.include?( :configuration_setting ).should == false
671
+ respond_to?( :configuration_setting ).should == true
672
+ instance_variables.empty?.should == true
673
+ end
674
+ setting_class_including_instance = ClassExtending.new
675
+ setting_class_including_instance.respond_to?( :configuration_setting ).should == false
676
+ setting_class_including_instance.instance_variables.empty?.should == true
677
+ end
678
+
679
+ class CascadingConfiguration::Hash::InstanceConfigurationMockClass
680
+ include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded::SubmoduleIncluding
681
+ instance_methods.include?( :configuration_setting ).should == true
682
+ respond_to?( :configuration_setting ).should == false
683
+ instance_variables.empty?.should == true
684
+ end
685
+
686
+ object_instance_one = CascadingConfiguration::Hash::InstanceConfigurationMockClass.new
687
+ object_instance_one.respond_to?( :configuration_setting ).should == true
688
+ object_instance_one.instance_variables.empty?.should == true
689
+
690
+ class CascadingConfiguration::Hash::InstanceConfigurationMockClassSub1 < CascadingConfiguration::Hash::InstanceConfigurationMockClass
691
+ instance_methods.include?( :configuration_setting ).should == true
692
+ respond_to?( :configuration_setting ).should == false
693
+ instance_variables.empty?.should == true
694
+ end
695
+
696
+ object_instance_two = CascadingConfiguration::Hash::InstanceConfigurationMockClassSub1.new
697
+ object_instance_two.respond_to?( :configuration_setting ).should == true
698
+ object_instance_two.instance_variables.empty?.should == true
699
+
700
+ end
701
+
702
+ ####################################
703
+ # attr_object_configuration_hash #
704
+ ####################################
705
+
706
+ it 'can define a local configuration hash, which will not cascade' do
707
+
708
+ # possibilities:
709
+ # * module extended with setting
710
+ # => singleton gets attr_configuration and configurations
711
+ # => including modules and classes get nothing
712
+ # => extending modules and classes get nothing
713
+ # => instances of including and extending classes get nothing
714
+ # * module included with setting
715
+ # => singleton gets attr_configuration and configurations
716
+ # => including modules and classes get attr_configuration and configurations
717
+ # => instances of including classes get configurations
718
+ # => extending modules and classes get attr_configuration and configurations
719
+ # => instances of extending classes get nothing
720
+ module CascadingConfiguration::Hash::ObjectConfigurationMockModuleExtended
721
+ extend CascadingConfiguration::Hash
722
+ # => singleton gets attr_configuration and configurations
723
+ respond_to?( :attr_object_configuration_hash ).should == true
724
+ attr_object_configuration_hash :configuration_setting
725
+ respond_to?( :configuration_setting ).should == true
726
+ configuration_setting.should == {}
727
+ self.configuration_setting[ :a_configuration ] = :some_value
728
+ configuration_setting.should == { :a_configuration => :some_value }
729
+ instance_methods.include?( :configuration_setting ).should == false
730
+ instance_variables.empty?.should == true
731
+ # => including modules and classes get nothing
732
+ module SubmoduleIncluding
733
+ include CascadingConfiguration::Hash::ObjectConfigurationMockModuleExtended
734
+ instance_methods.include?( :configuration_setting ).should == false
735
+ respond_to?( :configuration_setting ).should == false
736
+ instance_variables.empty?.should == true
737
+ end
738
+ # => extending modules and classes get nothing
739
+ module SubmoduleExtending
740
+ extend CascadingConfiguration::Hash::ObjectConfigurationMockModuleExtended
741
+ instance_methods.include?( :configuration_setting ).should == false
742
+ respond_to?( :configuration_setting ).should == false
743
+ instance_variables.empty?.should == true
744
+ end
745
+ # => instances of including and extending classes get nothing
746
+ class ClassIncluding
747
+ include CascadingConfiguration::Hash::ObjectConfigurationMockModuleExtended
748
+ instance_methods.include?( :configuration_setting ).should == false
749
+ respond_to?( :configuration_setting ).should == false
750
+ instance_variables.empty?.should == true
751
+ end
752
+ class ClassExtending
753
+ extend CascadingConfiguration::Hash::ObjectConfigurationMockModuleExtended
754
+ instance_methods.include?( :configuration_setting ).should == false
755
+ respond_to?( :configuration_setting ).should == false
756
+ instance_variables.empty?.should == true
757
+ end
758
+ end
759
+
760
+ # * module included with setting
761
+ module CascadingConfiguration::Hash::ObjectConfigurationMockModuleIncluded
762
+ include CascadingConfiguration::Hash
763
+ # => singleton gets attr_configuration and configurations
764
+ respond_to?( :attr_object_configuration_hash ).should == true
765
+ attr_object_configuration_hash :configuration_setting
644
766
  respond_to?( :configuration_setting ).should == true
645
767
  configuration_setting.should == {}
646
768
  self.configuration_setting[ :a_configuration ] = :some_value
@@ -649,14 +771,14 @@ describe CascadingConfiguration::Hash do
649
771
  instance_variables.empty?.should == true
650
772
  # => including modules and classes get attr_configuration and configurations
651
773
  module SubmoduleIncluding
652
- include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
774
+ include CascadingConfiguration::Hash::ObjectConfigurationMockModuleIncluded
653
775
  instance_methods.include?( :configuration_setting ).should == false
654
776
  respond_to?( :configuration_setting ).should == false
655
777
  instance_variables.empty?.should == true
656
778
  end
657
779
  # => extending modules and classes get attr_configuration and configurations
658
780
  module SubmoduleExtending
659
- extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
781
+ extend CascadingConfiguration::Hash::ObjectConfigurationMockModuleIncluded
660
782
  # if we're extended then we want to use the eigenclass ancestor chain
661
783
  # - the first ancestor will be the extending module
662
784
  # - the rest of the ancestors will be the extending module's include chain
@@ -666,7 +788,7 @@ describe CascadingConfiguration::Hash do
666
788
  end
667
789
  # => instances of including classes get configurations
668
790
  class ClassIncluding
669
- include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
791
+ include CascadingConfiguration::Hash::ObjectConfigurationMockModuleIncluded
670
792
  instance_methods.include?( :configuration_setting ).should == false
671
793
  respond_to?( :configuration_setting ).should == false
672
794
  instance_variables.empty?.should == true
@@ -675,7 +797,7 @@ describe CascadingConfiguration::Hash do
675
797
  setting_class_including_instance.respond_to?( :configuration_setting ).should == false
676
798
  setting_class_including_instance.instance_variables.empty?.should == true
677
799
  class ClassExtending
678
- extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
800
+ extend CascadingConfiguration::Hash::ObjectConfigurationMockModuleIncluded
679
801
  instance_methods.include?( :configuration_setting ).should == false
680
802
  respond_to?( :configuration_setting ).should == false
681
803
  instance_variables.empty?.should == true
@@ -685,25 +807,25 @@ describe CascadingConfiguration::Hash do
685
807
  setting_class_including_instance.instance_variables.empty?.should == true
686
808
  end
687
809
 
688
- class CascadingConfiguration::Hash::InstanceConfigurationMockClass
689
- include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded::SubmoduleIncluding
810
+ class CascadingConfiguration::Hash::ObjectConfigurationMockClass
811
+ include CascadingConfiguration::Hash::ObjectConfigurationMockModuleIncluded::SubmoduleIncluding
690
812
  instance_methods.include?( :configuration_setting ).should == false
691
813
  respond_to?( :configuration_setting ).should == false
692
814
  instance_variables.empty?.should == true
693
815
  end
694
816
 
695
- object_instance_one = CascadingConfiguration::Hash::InstanceConfigurationMockClass.new
696
- object_instance_one.respond_to?( :a_configuration ).should == false
817
+ object_instance_one = CascadingConfiguration::Hash::ObjectConfigurationMockClass.new
818
+ object_instance_one.respond_to?( :configuration_setting ).should == false
697
819
  object_instance_one.instance_variables.empty?.should == true
698
820
 
699
- class CascadingConfiguration::Hash::InstanceConfigurationMockClassSub1 < CascadingConfiguration::Hash::InstanceConfigurationMockClass
821
+ class CascadingConfiguration::Hash::ObjectConfigurationMockClassSub1 < CascadingConfiguration::Hash::ObjectConfigurationMockClass
700
822
  instance_methods.include?( :configuration_setting ).should == false
701
823
  respond_to?( :configuration_setting ).should == false
702
824
  instance_variables.empty?.should == true
703
825
  end
704
826
 
705
- object_instance_two = CascadingConfiguration::Hash::InstanceConfigurationMockClassSub1.new
706
- object_instance_two.respond_to?( :a_configuration ).should == false
827
+ object_instance_two = CascadingConfiguration::Hash::ObjectConfigurationMockClassSub1.new
828
+ object_instance_two.respond_to?( :configuration_setting ).should == false
707
829
  object_instance_two.instance_variables.empty?.should == true
708
830
 
709
831
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 4
8
- - 0
9
- version: 1.4.0
8
+ - 1
9
+ version: 1.4.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Asher
@@ -57,6 +57,7 @@ files:
57
57
  - lib/cascading-configuration-hash/CascadingConfiguration/CompositingHash/Instance.rb
58
58
  - lib/cascading-configuration-hash/CascadingConfiguration/CompositingHash.rb
59
59
  - lib/cascading-configuration-hash/CascadingConfiguration/Hash/AccessorDefinitionMethods.rb
60
+ - lib/cascading-configuration-hash/CascadingConfiguration/Hash/Interface/Instance.rb
60
61
  - lib/cascading-configuration-hash/CascadingConfiguration/Hash/Interface.rb
61
62
  - lib/cascading-configuration-hash/CascadingConfiguration/Hash.rb
62
63
  - lib/cascading-configuration-hash/CascadingConfiguration/LocalConfigurationHash.rb