cascading-configuration-hash 1.3.1 → 1.3.2

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