cascading-configuration-hash 1.3.1 → 1.3.2
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-hash/CascadingConfiguration/Hash/AccessorDefinitionMethods.rb
CHANGED
@@ -66,6 +66,37 @@ module CascadingConfiguration::Hash::AccessorDefinitionMethods
|
|
66
66
|
############################################
|
67
67
|
|
68
68
|
def define_local_configuration_hash_setter( configuration_name )
|
69
|
+
configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
|
70
|
+
[ accessor_instance_support, accessor_local_instance_support ].compact.each do |module_support|
|
71
|
+
module_support.module_eval do
|
72
|
+
define_method( configuration_setter_name ) do |hash|
|
73
|
+
# we want the hash to supplant existing config
|
74
|
+
return composite_hash_for_cascading_configuration( configuration_name ).replace( hash )
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
############################################
|
81
|
+
# define_local_configuration_hash_getter #
|
82
|
+
############################################
|
83
|
+
|
84
|
+
def define_local_configuration_hash_getter( configuration_name )
|
85
|
+
configuration_getter_name = configuration_name
|
86
|
+
[ accessor_instance_support, accessor_local_instance_support ].compact.each do |module_support|
|
87
|
+
module_support.module_eval do
|
88
|
+
define_method( configuration_getter_name ) do
|
89
|
+
return composite_hash_for_cascading_configuration( configuration_name )
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
###############################################
|
96
|
+
# define_existant_configuration_hash_setter #
|
97
|
+
###############################################
|
98
|
+
|
99
|
+
def define_existant_configuration_hash_setter( configuration_name )
|
69
100
|
configuration_setter_name = ( configuration_name.to_s + '=' ).to_sym
|
70
101
|
accessor_local_instance_support.module_eval do
|
71
102
|
define_method( configuration_setter_name ) do |hash|
|
@@ -76,10 +107,10 @@ module CascadingConfiguration::Hash::AccessorDefinitionMethods
|
|
76
107
|
end
|
77
108
|
|
78
109
|
############################################
|
79
|
-
#
|
110
|
+
# define_existant_configuration_hash_getter #
|
80
111
|
############################################
|
81
112
|
|
82
|
-
def
|
113
|
+
def define_existant_configuration_hash_getter( configuration_name )
|
83
114
|
configuration_getter_name = configuration_name
|
84
115
|
accessor_local_instance_support.module_eval do
|
85
116
|
define_method( configuration_getter_name ) do
|
@@ -61,6 +61,30 @@ module CascadingConfiguration::Hash::Interface
|
|
61
61
|
# define configuration getter
|
62
62
|
define_local_configuration_hash_getter( this_property_name )
|
63
63
|
end
|
64
|
+
|
65
|
+
CascadingConfiguration::Variable.cascade_local_instance( self )
|
66
|
+
|
67
|
+
return self
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
######################################
|
72
|
+
# attr_existant_configuration_hash #
|
73
|
+
######################################
|
74
|
+
|
75
|
+
# defines configuration in present class or module context
|
76
|
+
# configuration does not cascade
|
77
|
+
def attr_existant_configuration_hash( *property_names, & compositing_block )
|
78
|
+
|
79
|
+
CascadingConfiguration::Variable.define_accessor_local_instance_support( self )
|
80
|
+
|
81
|
+
property_names.each do |this_property_name|
|
82
|
+
accessor_module_support.set_compositing_proc( this_property_name, compositing_block ) if block_given?
|
83
|
+
# define configuration setter
|
84
|
+
define_existant_configuration_hash_setter( this_property_name )
|
85
|
+
# define configuration getter
|
86
|
+
define_existant_configuration_hash_getter( this_property_name )
|
87
|
+
end
|
64
88
|
|
65
89
|
return self
|
66
90
|
|
@@ -513,18 +513,150 @@ describe CascadingConfiguration::Hash do
|
|
513
513
|
configuration_setting.should == {}
|
514
514
|
self.configuration_setting[ :a_configuration ] = :some_value
|
515
515
|
configuration_setting.should == { :a_configuration => :some_value }
|
516
|
-
instance_methods.include?( :configuration_setting ).should ==
|
516
|
+
instance_methods.include?( :configuration_setting ).should == true
|
517
517
|
instance_variables.empty?.should == true
|
518
518
|
# => including modules and classes get attr_configuration and configurations
|
519
519
|
module SubmoduleIncluding
|
520
520
|
include CascadingConfiguration::Hash::LocalConfigurationMockModuleIncluded
|
521
|
+
instance_methods.include?( :configuration_setting ).should == true
|
522
|
+
respond_to?( :configuration_setting ).should == true
|
523
|
+
instance_variables.empty?.should == true
|
524
|
+
end
|
525
|
+
# => extending modules and classes get attr_configuration and configurations
|
526
|
+
module SubmoduleExtending
|
527
|
+
extend CascadingConfiguration::Hash::LocalConfigurationMockModuleIncluded
|
528
|
+
# if we're extended then we want to use the eigenclass ancestor chain
|
529
|
+
# - the first ancestor will be the extending module
|
530
|
+
# - the rest of the ancestors will be the extending module's include chain
|
531
|
+
instance_methods.include?( :configuration_setting ).should == false
|
532
|
+
respond_to?( :configuration_setting ).should == true
|
533
|
+
instance_variables.empty?.should == true
|
534
|
+
end
|
535
|
+
# => instances of including classes get configurations
|
536
|
+
class ClassIncluding
|
537
|
+
include CascadingConfiguration::Hash::LocalConfigurationMockModuleIncluded
|
538
|
+
instance_methods.include?( :configuration_setting ).should == true
|
539
|
+
respond_to?( :configuration_setting ).should == true
|
540
|
+
instance_variables.empty?.should == true
|
541
|
+
end
|
542
|
+
setting_class_including_instance = ClassIncluding.new
|
543
|
+
setting_class_including_instance.respond_to?( :configuration_setting ).should == true
|
544
|
+
setting_class_including_instance.instance_variables.empty?.should == true
|
545
|
+
class ClassExtending
|
546
|
+
extend CascadingConfiguration::Hash::LocalConfigurationMockModuleIncluded
|
547
|
+
instance_methods.include?( :configuration_setting ).should == false
|
548
|
+
respond_to?( :configuration_setting ).should == true
|
549
|
+
instance_variables.empty?.should == true
|
550
|
+
end
|
551
|
+
setting_class_including_instance = ClassExtending.new
|
552
|
+
setting_class_including_instance.respond_to?( :configuration_setting ).should == false
|
553
|
+
setting_class_including_instance.instance_variables.empty?.should == true
|
554
|
+
end
|
555
|
+
|
556
|
+
class CascadingConfiguration::Hash::LocalConfigurationMockClass
|
557
|
+
include CascadingConfiguration::Hash::LocalConfigurationMockModuleIncluded::SubmoduleIncluding
|
558
|
+
instance_methods.include?( :configuration_setting ).should == true
|
559
|
+
respond_to?( :configuration_setting ).should == false
|
560
|
+
instance_variables.empty?.should == true
|
561
|
+
end
|
562
|
+
|
563
|
+
object_instance_one = CascadingConfiguration::Hash::LocalConfigurationMockClass.new
|
564
|
+
object_instance_one.respond_to?( :a_configuration ).should == false
|
565
|
+
object_instance_one.instance_variables.empty?.should == true
|
566
|
+
|
567
|
+
class CascadingConfiguration::Hash::LocalConfigurationMockClassSub1 < CascadingConfiguration::Hash::LocalConfigurationMockClass
|
568
|
+
instance_methods.include?( :configuration_setting ).should == true
|
569
|
+
respond_to?( :configuration_setting ).should == false
|
570
|
+
instance_variables.empty?.should == true
|
571
|
+
end
|
572
|
+
|
573
|
+
object_instance_two = CascadingConfiguration::Hash::LocalConfigurationMockClassSub1.new
|
574
|
+
object_instance_two.respond_to?( :a_configuration ).should == false
|
575
|
+
object_instance_two.instance_variables.empty?.should == true
|
576
|
+
|
577
|
+
end
|
578
|
+
|
579
|
+
|
580
|
+
######################################
|
581
|
+
# attr_existant_configuration_hash #
|
582
|
+
######################################
|
583
|
+
|
584
|
+
it 'can define a local configuration hash, which will not cascade' do
|
585
|
+
|
586
|
+
# possibilities:
|
587
|
+
# * module extended with setting
|
588
|
+
# => singleton gets attr_configuration and configurations
|
589
|
+
# => including modules and classes get nothing
|
590
|
+
# => extending modules and classes get nothing
|
591
|
+
# => instances of including and extending classes get nothing
|
592
|
+
# * module included with setting
|
593
|
+
# => singleton gets attr_configuration and configurations
|
594
|
+
# => including modules and classes get attr_configuration and configurations
|
595
|
+
# => instances of including classes get configurations
|
596
|
+
# => extending modules and classes get attr_configuration and configurations
|
597
|
+
# => instances of extending classes get nothing
|
598
|
+
module CascadingConfiguration::Hash::InstanceConfigurationMockModuleExtended
|
599
|
+
extend CascadingConfiguration::Hash
|
600
|
+
# => singleton gets attr_configuration and configurations
|
601
|
+
respond_to?( :attr_existant_configuration_hash ).should == true
|
602
|
+
attr_existant_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 }
|
607
|
+
instance_methods.include?( :configuration_setting ).should == false
|
608
|
+
instance_variables.empty?.should == true
|
609
|
+
# => including modules and classes get nothing
|
610
|
+
module SubmoduleIncluding
|
611
|
+
include CascadingConfiguration::Hash::InstanceConfigurationMockModuleExtended
|
612
|
+
instance_methods.include?( :configuration_setting ).should == false
|
613
|
+
respond_to?( :configuration_setting ).should == false
|
614
|
+
instance_variables.empty?.should == true
|
615
|
+
end
|
616
|
+
# => extending modules and classes get nothing
|
617
|
+
module SubmoduleExtending
|
618
|
+
extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleExtended
|
619
|
+
instance_methods.include?( :configuration_setting ).should == false
|
620
|
+
respond_to?( :configuration_setting ).should == false
|
621
|
+
instance_variables.empty?.should == true
|
622
|
+
end
|
623
|
+
# => instances of including and extending classes get nothing
|
624
|
+
class ClassIncluding
|
625
|
+
include CascadingConfiguration::Hash::InstanceConfigurationMockModuleExtended
|
626
|
+
instance_methods.include?( :configuration_setting ).should == false
|
627
|
+
respond_to?( :configuration_setting ).should == false
|
628
|
+
instance_variables.empty?.should == true
|
629
|
+
end
|
630
|
+
class ClassExtending
|
631
|
+
extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleExtended
|
632
|
+
instance_methods.include?( :configuration_setting ).should == false
|
633
|
+
respond_to?( :configuration_setting ).should == false
|
634
|
+
instance_variables.empty?.should == true
|
635
|
+
end
|
636
|
+
end
|
637
|
+
|
638
|
+
# * module included with setting
|
639
|
+
module CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
|
640
|
+
include CascadingConfiguration::Hash
|
641
|
+
# => singleton gets attr_configuration and configurations
|
642
|
+
respond_to?( :attr_existant_configuration_hash ).should == true
|
643
|
+
attr_existant_configuration_hash :configuration_setting
|
644
|
+
respond_to?( :configuration_setting ).should == true
|
645
|
+
configuration_setting.should == {}
|
646
|
+
self.configuration_setting[ :a_configuration ] = :some_value
|
647
|
+
configuration_setting.should == { :a_configuration => :some_value }
|
648
|
+
instance_methods.include?( :configuration_setting ).should == false
|
649
|
+
instance_variables.empty?.should == true
|
650
|
+
# => including modules and classes get attr_configuration and configurations
|
651
|
+
module SubmoduleIncluding
|
652
|
+
include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
|
521
653
|
instance_methods.include?( :configuration_setting ).should == false
|
522
654
|
respond_to?( :configuration_setting ).should == false
|
523
655
|
instance_variables.empty?.should == true
|
524
656
|
end
|
525
657
|
# => extending modules and classes get attr_configuration and configurations
|
526
658
|
module SubmoduleExtending
|
527
|
-
extend CascadingConfiguration::Hash::
|
659
|
+
extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
|
528
660
|
# if we're extended then we want to use the eigenclass ancestor chain
|
529
661
|
# - the first ancestor will be the extending module
|
530
662
|
# - the rest of the ancestors will be the extending module's include chain
|
@@ -534,7 +666,7 @@ describe CascadingConfiguration::Hash do
|
|
534
666
|
end
|
535
667
|
# => instances of including classes get configurations
|
536
668
|
class ClassIncluding
|
537
|
-
include CascadingConfiguration::Hash::
|
669
|
+
include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
|
538
670
|
instance_methods.include?( :configuration_setting ).should == false
|
539
671
|
respond_to?( :configuration_setting ).should == false
|
540
672
|
instance_variables.empty?.should == true
|
@@ -543,7 +675,7 @@ describe CascadingConfiguration::Hash do
|
|
543
675
|
setting_class_including_instance.respond_to?( :configuration_setting ).should == false
|
544
676
|
setting_class_including_instance.instance_variables.empty?.should == true
|
545
677
|
class ClassExtending
|
546
|
-
extend CascadingConfiguration::Hash::
|
678
|
+
extend CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded
|
547
679
|
instance_methods.include?( :configuration_setting ).should == false
|
548
680
|
respond_to?( :configuration_setting ).should == false
|
549
681
|
instance_variables.empty?.should == true
|
@@ -553,24 +685,24 @@ describe CascadingConfiguration::Hash do
|
|
553
685
|
setting_class_including_instance.instance_variables.empty?.should == true
|
554
686
|
end
|
555
687
|
|
556
|
-
class CascadingConfiguration::Hash::
|
557
|
-
include CascadingConfiguration::Hash::
|
688
|
+
class CascadingConfiguration::Hash::InstanceConfigurationMockClass
|
689
|
+
include CascadingConfiguration::Hash::InstanceConfigurationMockModuleIncluded::SubmoduleIncluding
|
558
690
|
instance_methods.include?( :configuration_setting ).should == false
|
559
691
|
respond_to?( :configuration_setting ).should == false
|
560
692
|
instance_variables.empty?.should == true
|
561
693
|
end
|
562
694
|
|
563
|
-
object_instance_one = CascadingConfiguration::Hash::
|
695
|
+
object_instance_one = CascadingConfiguration::Hash::InstanceConfigurationMockClass.new
|
564
696
|
object_instance_one.respond_to?( :a_configuration ).should == false
|
565
697
|
object_instance_one.instance_variables.empty?.should == true
|
566
698
|
|
567
|
-
class CascadingConfiguration::Hash::
|
699
|
+
class CascadingConfiguration::Hash::InstanceConfigurationMockClassSub1 < CascadingConfiguration::Hash::InstanceConfigurationMockClass
|
568
700
|
instance_methods.include?( :configuration_setting ).should == false
|
569
701
|
respond_to?( :configuration_setting ).should == false
|
570
702
|
instance_variables.empty?.should == true
|
571
703
|
end
|
572
704
|
|
573
|
-
object_instance_two = CascadingConfiguration::Hash::
|
705
|
+
object_instance_two = CascadingConfiguration::Hash::InstanceConfigurationMockClassSub1.new
|
574
706
|
object_instance_two.respond_to?( :a_configuration ).should == false
|
575
707
|
object_instance_two.instance_variables.empty?.should == true
|
576
708
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 1.3.
|
8
|
+
- 2
|
9
|
+
version: 1.3.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Asher
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-08-
|
17
|
+
date: 2011-08-03 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|