cascading-configuration-setting 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.
@@ -10,6 +10,8 @@ module CascadingConfiguration
10
10
  module AccessorDefinitionMethods
11
11
  end
12
12
  module Interface
13
+ module Instance
14
+ end
13
15
  end
14
16
  module ObjectInstance
15
17
  end
@@ -19,3 +21,4 @@ end
19
21
  require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting.rb'
20
22
  require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/AccessorDefinitionMethods.rb'
21
23
  require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/Interface.rb'
24
+ require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/Interface/Instance.rb'
@@ -13,7 +13,9 @@ module CascadingConfiguration::Setting
13
13
  class_or_module.extend_also_extends( CascadingConfiguration::Variable::EigenclassConfigurationChain )
14
14
  end
15
15
 
16
- include_cascades_prepending_extends( CascadingConfiguration::Setting )
16
+ include_cascades_extends( CascadingConfiguration::Setting::Interface::Instance )
17
+
18
+ include_cascades_extends( CascadingConfiguration::Setting )
17
19
 
18
20
  prepend_module_include do |class_or_module|
19
21
  class_or_module.include_or_extend_cascades_prepending_extends do
@@ -104,7 +104,7 @@ module CascadingConfiguration::Setting::AccessorDefinitionMethods
104
104
 
105
105
  def define_instance_configuration_setter( configuration_name )
106
106
  configuration_setter_name = ( configuration_name.to_s + '=' ).to_s
107
- accessor_local_instance_support.module_eval do
107
+ accessor_instance_support.module_eval do
108
108
  define_method( configuration_setter_name ) do |value|
109
109
  # configuration setter returns setting variable (variable from self), which is now the ID of value
110
110
  return accessor_module_support.set_configuration_variable( self, configuration_name, value )
@@ -117,6 +117,35 @@ module CascadingConfiguration::Setting::AccessorDefinitionMethods
117
117
  ##########################################
118
118
 
119
119
  def define_instance_configuration_getter( configuration_name )
120
+ configuration_getter_name = configuration_name
121
+ accessor_instance_support.module_eval do
122
+ define_method( configuration_getter_name ) do
123
+ # configuration getter returns current setting value (taken from first superclass with setting)
124
+ # that means first variable that has been set
125
+ return accessor_module_support.get_configuration_variable( self, configuration_name )
126
+ end
127
+ end
128
+ end
129
+
130
+ ########################################
131
+ # define_object_configuration_setter #
132
+ ########################################
133
+
134
+ def define_object_configuration_setter( configuration_name )
135
+ configuration_setter_name = ( configuration_name.to_s + '=' ).to_s
136
+ accessor_local_instance_support.module_eval do
137
+ define_method( configuration_setter_name ) do |value|
138
+ # configuration setter returns setting variable (variable from self), which is now the ID of value
139
+ return accessor_module_support.set_configuration_variable( self, configuration_name, value )
140
+ end
141
+ end
142
+ end
143
+
144
+ ########################################
145
+ # define_object_configuration_getter #
146
+ ########################################
147
+
148
+ def define_object_configuration_getter( configuration_name )
120
149
  configuration_getter_name = configuration_name
121
150
  accessor_local_instance_support.module_eval do
122
151
  define_method( configuration_getter_name ) do
@@ -53,19 +53,19 @@ module CascadingConfiguration::Setting::Interface
53
53
  CascadingConfiguration::Variable.cascade_local_instance( self )
54
54
  end
55
55
 
56
- #################################
57
- # attr_instance_configuration #
58
- #################################
56
+ ###############################
57
+ # attr_object_configuration #
58
+ ###############################
59
59
 
60
60
  # local to class or module or instance that declares it
61
61
  # * only in the instance that declares it
62
- def attr_instance_configuration( *property_names )
62
+ def attr_object_configuration( *property_names )
63
63
  CascadingConfiguration::Variable.define_accessor_local_instance_support( self )
64
64
  property_names.each do |this_property_name|
65
65
  # define configuration setter
66
- define_instance_configuration_setter( this_property_name )
66
+ define_object_configuration_setter( this_property_name )
67
67
  # define configuration getter
68
- define_instance_configuration_getter( this_property_name )
68
+ define_object_configuration_getter( this_property_name )
69
69
  end
70
70
  end
71
71
 
@@ -0,0 +1,23 @@
1
+
2
+ module CascadingConfiguration::Setting::Interface::Instance
3
+
4
+ extend CascadingConfiguration::InternalModuleStub
5
+
6
+ #################################
7
+ # attr_instance_configuration #
8
+ #################################
9
+
10
+ # local to class or module or instance that declares it
11
+ # * in instances of the class or module that declares it
12
+ # * in instance if declared on non-class/non-module object instance
13
+ def attr_instance_configuration( *property_names )
14
+ property_names.each do |this_property_name|
15
+ # define configuration setter
16
+ define_instance_configuration_setter( this_property_name )
17
+ # define configuration getter
18
+ define_instance_configuration_getter( this_property_name )
19
+ end
20
+ return self
21
+ end
22
+
23
+ end
@@ -449,19 +449,122 @@ describe CascadingConfiguration::Setting do
449
449
 
450
450
  it 'can define a configuration setting for the present instance, which will not cascade' do
451
451
 
452
- # extending a module or class works like a finalizer for the cascading configuration
453
- # if the configuration is re-opened at a later point (including or extending a lower ancestor)
454
- # then the configuration will still cascade upward
455
- # this permits ancestors in the heirarchy to skip out on configurations
456
- # upward cascade can be frozen at any point using :freeze!, which will prevent further upward lookup
457
-
458
452
  # possibilities:
459
453
  # * module extended with setting
460
- module CascadingConfiguration::Setting::LocalConfigurationMockExtended
454
+ module CascadingConfiguration::Setting::InstanceConfigurationMockExtended
461
455
  extend CascadingConfiguration::Setting
462
456
  # => singleton gets attr_configuration and configurations
457
+ respond_to?( :attr_instance_configuration ).should == false
458
+ instance_methods.include?( :some_configuration ).should == false
459
+ instance_variables.empty?.should == true
460
+ # => including modules and classes get nothing
461
+ module SubmoduleIncluding
462
+ include CascadingConfiguration::Setting::InstanceConfigurationMockExtended
463
+ instance_methods.include?( :some_configuration ).should == false
464
+ respond_to?( :some_configuration ).should == false
465
+ instance_variables.empty?.should == true
466
+ end
467
+ # => extending modules and classes get nothing
468
+ module SubmoduleExtending
469
+ extend CascadingConfiguration::Setting::InstanceConfigurationMockExtended
470
+ instance_methods.include?( :some_configuration ).should == false
471
+ respond_to?( :some_configuration ).should == false
472
+ instance_variables.empty?.should == true
473
+ end
474
+ # => instances of including and extending classes get nothing
475
+ class ClassIncluding
476
+ include CascadingConfiguration::Setting::InstanceConfigurationMockExtended
477
+ instance_methods.include?( :some_configuration ).should == false
478
+ respond_to?( :some_configuration ).should == false
479
+ instance_variables.empty?.should == true
480
+ end
481
+ class ClassExtending
482
+ extend CascadingConfiguration::Setting::InstanceConfigurationMockExtended
483
+ instance_methods.include?( :some_configuration ).should == false
484
+ respond_to?( :some_configuration ).should == false
485
+ instance_variables.empty?.should == true
486
+ end
487
+ end
488
+
489
+ # * module included with setting
490
+ module CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
491
+ include CascadingConfiguration::Setting
492
+ # => singleton gets attr_configuration and configurations
463
493
  respond_to?( :attr_instance_configuration ).should == true
464
494
  attr_instance_configuration :some_configuration
495
+ respond_to?( :some_configuration ).should == false
496
+ instance_methods.include?( :some_configuration ).should == true
497
+ instance_variables.empty?.should == true
498
+ # => including modules and classes get attr_configuration and configurations
499
+ module SubmoduleIncluding
500
+ include CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
501
+ instance_methods.include?( :some_configuration ).should == true
502
+ respond_to?( :some_configuration ).should == false
503
+ instance_variables.empty?.should == true
504
+ end
505
+ # => extending modules and classes get attr_configuration and configurations
506
+ module SubmoduleExtending
507
+ extend CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
508
+ # if we're extended then we want to use the eigenclass ancestor chain
509
+ # - the first ancestor will be the extending module
510
+ # - the rest of the ancestors will be the extending module's include chain
511
+ respond_to?( :some_configuration ).should == true
512
+ instance_methods.include?( :some_configuration ).should == false
513
+ instance_variables.empty?.should == true
514
+ end
515
+ # => instances of including classes get configurations
516
+ class ClassIncluding
517
+ include CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
518
+ instance_methods.include?( :some_configuration ).should == true
519
+ respond_to?( :some_configuration ).should == false
520
+ instance_variables.empty?.should == true
521
+ end
522
+ setting_class_including_instance = ClassIncluding.new
523
+ setting_class_including_instance.respond_to?( :some_configuration ).should == true
524
+ setting_class_including_instance.instance_variables.empty?.should == true
525
+ # => instances of extending classes get nothing
526
+ class ClassExtending
527
+ extend CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
528
+ respond_to?( :some_configuration ).should == true
529
+ instance_methods.include?( :some_configuration ).should == false
530
+ instance_variables.empty?.should == true
531
+ end
532
+ setting_class_including_instance = ClassExtending.new
533
+ setting_class_including_instance.respond_to?( :some_configuration ).should == false
534
+ setting_class_including_instance.instance_variables.empty?.should == true
535
+ end
536
+
537
+ class CascadingConfiguration::Setting::InstanceConfigurationMockClass
538
+ include CascadingConfiguration::Setting::InstanceConfigurationMockIncluded::SubmoduleIncluding
539
+ respond_to?( :some_configuration ).should == false
540
+ instance_methods.include?( :some_configuration ).should == true
541
+ instance_variables.empty?.should == true
542
+ end
543
+ class CascadingConfiguration::Setting::InstanceConfigurationMockClassSub1 < CascadingConfiguration::Setting::InstanceConfigurationMockClass
544
+ respond_to?( :some_configuration ).should == false
545
+ instance_methods.include?( :some_configuration ).should == true
546
+ instance_variables.empty?.should == true
547
+ end
548
+ class CascadingConfiguration::Setting::InstanceConfigurationMockClassSub2 < CascadingConfiguration::Setting::InstanceConfigurationMockClassSub1
549
+ respond_to?( :some_configuration ).should == false
550
+ instance_methods.include?( :some_configuration ).should == true
551
+ instance_variables.empty?.should == true
552
+ end
553
+ end
554
+
555
+ ###############################
556
+ # attr_object_configuration #
557
+ ###############################
558
+
559
+ it 'can define a configuration setting for the present instance, which will not cascade' do
560
+
561
+ # possibilities:
562
+ # * module extended with setting
563
+ module CascadingConfiguration::Setting::ObjectConfigurationMockExtended
564
+ extend CascadingConfiguration::Setting
565
+ # => singleton gets attr_configuration and configurations
566
+ respond_to?( :attr_object_configuration ).should == true
567
+ attr_object_configuration :some_configuration
465
568
  respond_to?( :some_configuration ).should == true
466
569
  self.some_configuration = :our_setting_value
467
570
  some_configuration.should == :our_setting_value
@@ -469,27 +572,27 @@ describe CascadingConfiguration::Setting do
469
572
  instance_variables.empty?.should == true
470
573
  # => including modules and classes get nothing
471
574
  module SubmoduleIncluding
472
- include CascadingConfiguration::Setting::LocalConfigurationMockExtended
575
+ include CascadingConfiguration::Setting::ObjectConfigurationMockExtended
473
576
  instance_methods.include?( :some_configuration ).should == false
474
577
  respond_to?( :some_configuration ).should == false
475
578
  instance_variables.empty?.should == true
476
579
  end
477
580
  # => extending modules and classes get nothing
478
581
  module SubmoduleExtending
479
- extend CascadingConfiguration::Setting::LocalConfigurationMockExtended
582
+ extend CascadingConfiguration::Setting::ObjectConfigurationMockExtended
480
583
  instance_methods.include?( :some_configuration ).should == false
481
584
  respond_to?( :some_configuration ).should == false
482
585
  instance_variables.empty?.should == true
483
586
  end
484
587
  # => instances of including and extending classes get nothing
485
588
  class ClassIncluding
486
- include CascadingConfiguration::Setting::LocalConfigurationMockExtended
589
+ include CascadingConfiguration::Setting::ObjectConfigurationMockExtended
487
590
  instance_methods.include?( :some_configuration ).should == false
488
591
  respond_to?( :some_configuration ).should == false
489
592
  instance_variables.empty?.should == true
490
593
  end
491
594
  class ClassExtending
492
- extend CascadingConfiguration::Setting::LocalConfigurationMockExtended
595
+ extend CascadingConfiguration::Setting::ObjectConfigurationMockExtended
493
596
  instance_methods.include?( :some_configuration ).should == false
494
597
  respond_to?( :some_configuration ).should == false
495
598
  instance_variables.empty?.should == true
@@ -497,11 +600,11 @@ describe CascadingConfiguration::Setting do
497
600
  end
498
601
 
499
602
  # * module included with setting
500
- module CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
603
+ module CascadingConfiguration::Setting::ObjectConfigurationMockIncluded
501
604
  include CascadingConfiguration::Setting
502
605
  # => singleton gets attr_configuration and configurations
503
- respond_to?( :attr_instance_configuration ).should == true
504
- attr_instance_configuration :some_configuration
606
+ respond_to?( :attr_object_configuration ).should == true
607
+ attr_object_configuration :some_configuration
505
608
  respond_to?( :some_configuration ).should == true
506
609
  self.some_configuration = :our_setting_value
507
610
  some_configuration.should == :our_setting_value
@@ -509,14 +612,14 @@ describe CascadingConfiguration::Setting do
509
612
  instance_variables.empty?.should == true
510
613
  # => including modules and classes get attr_configuration and configurations
511
614
  module SubmoduleIncluding
512
- include CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
615
+ include CascadingConfiguration::Setting::ObjectConfigurationMockIncluded
513
616
  instance_methods.include?( :some_configuration ).should == false
514
617
  respond_to?( :some_configuration ).should == false
515
618
  instance_variables.empty?.should == true
516
619
  end
517
620
  # => extending modules and classes get attr_configuration and configurations
518
621
  module SubmoduleExtending
519
- extend CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
622
+ extend CascadingConfiguration::Setting::ObjectConfigurationMockIncluded
520
623
  # if we're extended then we want to use the eigenclass ancestor chain
521
624
  # - the first ancestor will be the extending module
522
625
  # - the rest of the ancestors will be the extending module's include chain
@@ -526,7 +629,7 @@ describe CascadingConfiguration::Setting do
526
629
  end
527
630
  # => instances of including classes get configurations
528
631
  class ClassIncluding
529
- include CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
632
+ include CascadingConfiguration::Setting::ObjectConfigurationMockIncluded
530
633
  instance_methods.include?( :some_configuration ).should == false
531
634
  respond_to?( :some_configuration ).should == false
532
635
  instance_variables.empty?.should == true
@@ -536,7 +639,7 @@ describe CascadingConfiguration::Setting do
536
639
  setting_class_including_instance.instance_variables.empty?.should == true
537
640
  # => instances of extending classes get nothing
538
641
  class ClassExtending
539
- extend CascadingConfiguration::Setting::InstanceConfigurationMockIncluded
642
+ extend CascadingConfiguration::Setting::ObjectConfigurationMockIncluded
540
643
  respond_to?( :some_configuration ).should == false
541
644
  instance_methods.include?( :some_configuration ).should == false
542
645
  instance_variables.empty?.should == true
@@ -546,19 +649,19 @@ describe CascadingConfiguration::Setting do
546
649
  setting_class_including_instance.instance_variables.empty?.should == true
547
650
  end
548
651
 
549
- class CascadingConfiguration::Setting::InstanceConfigurationMockClass
550
- include CascadingConfiguration::Setting::InstanceConfigurationMockIncluded::SubmoduleIncluding
652
+ class CascadingConfiguration::Setting::ObjectConfigurationMockClass
653
+ include CascadingConfiguration::Setting::ObjectConfigurationMockIncluded::SubmoduleIncluding
551
654
  respond_to?( :some_configuration ).should == false
552
655
  instance_variables.empty?.should == true
553
656
  end
554
- class CascadingConfiguration::Setting::InstanceConfigurationMockClassSub1 < CascadingConfiguration::Setting::InstanceConfigurationMockClass
657
+ class CascadingConfiguration::Setting::ObjectConfigurationMockClassSub1 < CascadingConfiguration::Setting::ObjectConfigurationMockClass
555
658
  respond_to?( :some_configuration ).should == false
556
659
  instance_variables.empty?.should == true
557
660
  end
558
- class CascadingConfiguration::Setting::InstanceConfigurationMockClassSub2 < CascadingConfiguration::Setting::InstanceConfigurationMockClassSub1
661
+ class CascadingConfiguration::Setting::ObjectConfigurationMockClassSub2 < CascadingConfiguration::Setting::ObjectConfigurationMockClassSub1
559
662
  respond_to?( :some_configuration ).should == false
560
663
  instance_variables.empty?.should == true
561
664
  end
562
665
  end
563
-
666
+
564
667
  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
@@ -53,6 +53,7 @@ extra_rdoc_files: []
53
53
 
54
54
  files:
55
55
  - lib/cascading-configuration-setting/CascadingConfiguration/Setting/AccessorDefinitionMethods.rb
56
+ - lib/cascading-configuration-setting/CascadingConfiguration/Setting/Interface/Instance.rb
56
57
  - lib/cascading-configuration-setting/CascadingConfiguration/Setting/Interface.rb
57
58
  - lib/cascading-configuration-setting/CascadingConfiguration/Setting.rb
58
59
  - lib/cascading-configuration-setting.rb