cascading-configuration-hash 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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