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.
@@ -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
- # define_local_configuration_hash_getter #
110
+ # define_existant_configuration_hash_getter #
80
111
  ############################################
81
112
 
82
- def define_local_configuration_hash_getter( configuration_name )
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 == false
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::LocalConfigurationMockModuleIncluded
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::LocalConfigurationMockModuleIncluded
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::LocalConfigurationMockModuleIncluded
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::LocalConfigurationMockClass
557
- include CascadingConfiguration::Hash::LocalConfigurationMockModuleIncluded::SubmoduleIncluding
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::LocalConfigurationMockClass.new
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::LocalConfigurationMockClassSub1 < CascadingConfiguration::Hash::LocalConfigurationMockClass
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::LocalConfigurationMockClassSub1.new
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
- - 1
9
- version: 1.3.1
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-01 00:00:00 -04:00
17
+ date: 2011-08-03 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency