cascading-configuration-setting 1.1.5 → 1.1.6
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-setting.rb +6 -6
- data/lib/cascading-configuration-setting/CascadingConfiguration/Setting.rb +37 -8
- data/lib/cascading-configuration-setting/CascadingConfiguration/Setting/ConfigurationAccessors.rb +98 -0
- data/lib/cascading-configuration-setting/CascadingConfiguration/Setting/Interface.rb +51 -0
- data/lib/cascading-configuration-setting/CascadingConfiguration/Setting/ModuleInclusionExtensionSupport.rb +39 -0
- data/spec/CascadingConfiguration/Setting/{Accessors_spec.rb → ConfigurationAccessors_spec.rb} +1 -1
- data/spec/CascadingConfiguration/Setting_spec.rb +109 -37
- metadata +7 -7
- data/lib/cascading-configuration-setting/CascadingConfiguration/Setting/Accessors.rb +0 -36
- data/lib/cascading-configuration-setting/CascadingConfiguration/Setting/ClassInstance.rb +0 -19
- data/lib/cascading-configuration-setting/CascadingConfiguration/Setting/ModuleInstance.rb +0 -35
@@ -7,18 +7,18 @@ end
|
|
7
7
|
|
8
8
|
module CascadingConfiguration
|
9
9
|
module Setting
|
10
|
-
module
|
10
|
+
module ConfigurationAccessors
|
11
11
|
end
|
12
|
-
module
|
12
|
+
module Interface
|
13
13
|
end
|
14
14
|
module ObjectInstance
|
15
15
|
end
|
16
|
-
module
|
16
|
+
module ModuleInclusionExtensionSupport
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting.rb'
|
22
|
-
require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/
|
23
|
-
require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/
|
24
|
-
require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/
|
22
|
+
require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/ConfigurationAccessors.rb'
|
23
|
+
require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/Interface.rb'
|
24
|
+
require_relative 'cascading-configuration-setting/CascadingConfiguration/Setting/ModuleInclusionExtensionSupport.rb'
|
@@ -5,6 +5,25 @@ module CascadingConfiguration::Setting
|
|
5
5
|
|
6
6
|
include CascadingConfiguration::Variable
|
7
7
|
|
8
|
+
##########################
|
9
|
+
# self.append_features #
|
10
|
+
##########################
|
11
|
+
|
12
|
+
def self.append_features( class_or_module )
|
13
|
+
CascadingConfiguration::Variable.define_accessor_instance_support( class_or_module )
|
14
|
+
CascadingConfiguration::Variable.define_accessor_module_support( class_or_module )
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
########################
|
19
|
+
# self.extend_object #
|
20
|
+
########################
|
21
|
+
|
22
|
+
def self.extend_object( class_or_module )
|
23
|
+
CascadingConfiguration::Variable.define_accessor_module_support( class_or_module )
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
8
27
|
###################
|
9
28
|
# self.included #
|
10
29
|
###################
|
@@ -12,11 +31,22 @@ module CascadingConfiguration::Setting
|
|
12
31
|
def self.included( class_or_module )
|
13
32
|
module_self = self
|
14
33
|
class_or_module.instance_eval do
|
15
|
-
extend
|
16
|
-
extend
|
17
|
-
extend
|
18
|
-
|
19
|
-
|
34
|
+
extend module_self
|
35
|
+
extend module_self::Interface
|
36
|
+
extend module_self::ConfigurationAccessors
|
37
|
+
extend module_self::ModuleInclusionExtensionSupport unless is_a?( Class )
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
###################
|
42
|
+
# self.extended #
|
43
|
+
###################
|
44
|
+
|
45
|
+
def self.extended( class_or_module )
|
46
|
+
module_self = self
|
47
|
+
class_or_module.instance_eval do
|
48
|
+
extend module_self::Interface
|
49
|
+
extend module_self::ConfigurationAccessors
|
20
50
|
end
|
21
51
|
end
|
22
52
|
|
@@ -28,10 +58,9 @@ module CascadingConfiguration::Setting
|
|
28
58
|
|
29
59
|
configuration = nil
|
30
60
|
|
31
|
-
|
32
|
-
configuration_variable = klass::AccessorSupportModule.cascading_variable_name( configuration_name )
|
61
|
+
configuration_variable = accessor_module_support.cascading_variable_name( configuration_name )
|
33
62
|
|
34
|
-
|
63
|
+
ancestor_configuration_chain.each do |this_ancestor|
|
35
64
|
if this_ancestor.instance_variable_defined?( configuration_variable )
|
36
65
|
# if our instance defines this configuration, use its setting
|
37
66
|
configuration = this_ancestor.instance_variable_get( configuration_variable )
|
data/lib/cascading-configuration-setting/CascadingConfiguration/Setting/ConfigurationAccessors.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
|
2
|
+
module CascadingConfiguration::Setting::ConfigurationAccessors
|
3
|
+
|
4
|
+
extend CascadingConfiguration::InternalModuleStub
|
5
|
+
|
6
|
+
#############################
|
7
|
+
# define_cascading_setter #
|
8
|
+
#############################
|
9
|
+
|
10
|
+
def define_cascading_setter( configuration_name )
|
11
|
+
configuration_setter_name = ( configuration_name.to_s + '=' ).to_s
|
12
|
+
[ accessor_instance_support, accessor_module_support ].compact.each do |accessor_support_module|
|
13
|
+
accessor_support_module.module_eval do
|
14
|
+
define_method( configuration_setter_name ) do |value|
|
15
|
+
# configuration setter returns setting variable (variable from self), which is now the ID of value
|
16
|
+
return instance_variable_set( accessor_support_module.cascading_variable_name( configuration_name ), value )
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
#############################
|
23
|
+
# define_cascading_getter #
|
24
|
+
#############################
|
25
|
+
|
26
|
+
def define_cascading_getter( configuration_name )
|
27
|
+
configuration_getter_name = configuration_name
|
28
|
+
module_self = self
|
29
|
+
[ accessor_instance_support, accessor_module_support ].compact.each do |accessor_support_module|
|
30
|
+
accessor_support_module.module_eval do
|
31
|
+
define_method( configuration_getter_name ) do
|
32
|
+
# configuration getter returns current setting value (taken from first superclass with setting)
|
33
|
+
# that means first variable that has been set
|
34
|
+
return get_configuration_searching_upward( configuration_name )
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
#######################################
|
41
|
+
# define_class_configuration_setter #
|
42
|
+
#######################################
|
43
|
+
|
44
|
+
def define_class_configuration_setter( configuration_name )
|
45
|
+
configuration_setter_name = ( configuration_name.to_s + '=' ).to_s
|
46
|
+
accessor_module_support.module_eval do
|
47
|
+
define_method( configuration_setter_name ) do |value|
|
48
|
+
# configuration setter returns setting variable (variable from self), which is now the ID of value
|
49
|
+
return instance_variable_set( accessor_support_module.cascading_variable_name( configuration_name ), value )
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
#######################################
|
55
|
+
# define_class_configuration_getter #
|
56
|
+
#######################################
|
57
|
+
|
58
|
+
def define_class_configuration_getter( configuration_name )
|
59
|
+
configuration_getter_name = configuration_name
|
60
|
+
accessor_module_support.module_eval do
|
61
|
+
define_method( configuration_getter_name ) do
|
62
|
+
# configuration getter returns current setting value (taken from first superclass with setting)
|
63
|
+
# that means first variable that has been set
|
64
|
+
return get_configuration_searching_upward( configuration_name )
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
#######################################
|
70
|
+
# define_local_configuration_setter #
|
71
|
+
#######################################
|
72
|
+
|
73
|
+
def define_local_configuration_setter( configuration_name )
|
74
|
+
configuration_setter_name = ( configuration_name.to_s + '=' ).to_s
|
75
|
+
accessor_instance_support.module_eval do
|
76
|
+
define_method( configuration_setter_name ) do |value|
|
77
|
+
# configuration setter returns setting variable (variable from self), which is now the ID of value
|
78
|
+
return instance_variable_set( accessor_support_module.cascading_variable_name( configuration_name ), value )
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
#######################################
|
84
|
+
# define_local_configuration_getter #
|
85
|
+
#######################################
|
86
|
+
|
87
|
+
def define_local_configuration_getter( configuration_name )
|
88
|
+
configuration_getter_name = configuration_name
|
89
|
+
accessor_instance_support.module_eval do
|
90
|
+
define_method( configuration_getter_name ) do
|
91
|
+
# configuration getter returns current setting value (taken from first superclass with setting)
|
92
|
+
# that means first variable that has been set
|
93
|
+
return get_configuration_searching_upward( configuration_name )
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
|
2
|
+
module CascadingConfiguration::Setting::Interface
|
3
|
+
|
4
|
+
extend CascadingConfiguration::InternalModuleStub
|
5
|
+
|
6
|
+
########################
|
7
|
+
# attr_configuration #
|
8
|
+
########################
|
9
|
+
|
10
|
+
# defines configuration in class or module
|
11
|
+
# configuration cascades downward to instance including all classes or modules in-between
|
12
|
+
def attr_configuration( *property_names )
|
13
|
+
property_names.each do |this_property_name|
|
14
|
+
# define configuration setter
|
15
|
+
define_cascading_setter( this_property_name )
|
16
|
+
# define configuration getter
|
17
|
+
define_cascading_getter( this_property_name )
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
##############################
|
22
|
+
# attr_class_configuration #
|
23
|
+
##############################
|
24
|
+
|
25
|
+
# defines configuration in class or module
|
26
|
+
# configuration cascades downward to last class or module
|
27
|
+
def attr_class_configuration( *property_names )
|
28
|
+
property_names.each do |this_property_name|
|
29
|
+
# define configuration setter
|
30
|
+
define_class_configuration_setter( this_property_name )
|
31
|
+
# define configuration getter
|
32
|
+
define_class_configuration_getter( this_property_name )
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
##############################
|
37
|
+
# attr_local_configuration #
|
38
|
+
##############################
|
39
|
+
|
40
|
+
# defines configuration in present class or module context
|
41
|
+
# configuration does not cascade
|
42
|
+
def attr_local_configuration( *property_names )
|
43
|
+
property_names.each do |this_property_name|
|
44
|
+
# define configuration setter
|
45
|
+
define_local_configuration_setter( this_property_name )
|
46
|
+
# define configuration getter
|
47
|
+
define_local_configuration_getter( this_property_name )
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
module CascadingConfiguration::Setting::ModuleInclusionExtensionSupport
|
3
|
+
|
4
|
+
extend CascadingConfiguration::InternalModuleStub
|
5
|
+
|
6
|
+
##############
|
7
|
+
# included #
|
8
|
+
##############
|
9
|
+
|
10
|
+
def included( class_or_module )
|
11
|
+
super if defined?( super )
|
12
|
+
# CascadingConfiguration::Setting
|
13
|
+
module_self = self
|
14
|
+
class_or_module.instance_eval do
|
15
|
+
# include accessors defined for instances
|
16
|
+
include module_self.accessor_instance_support
|
17
|
+
# extend accessors defined for modules (and classes, which are modules)
|
18
|
+
extend module_self.accessor_module_support
|
19
|
+
extend CascadingConfiguration::Setting
|
20
|
+
extend CascadingConfiguration::Setting::ModuleInclusionExtensionSupport unless is_a?( Class )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
##############
|
25
|
+
# extended #
|
26
|
+
##############
|
27
|
+
|
28
|
+
def extended( class_or_module )
|
29
|
+
super if defined?( super )
|
30
|
+
# CascadingConfiguration::Setting
|
31
|
+
module_self = self
|
32
|
+
class_or_module.instance_eval do
|
33
|
+
extend module_self.accessor_module_support
|
34
|
+
extend CascadingConfiguration::Variable::EigenclassConfigurationChain
|
35
|
+
extend CascadingConfiguration::Setting
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -8,51 +8,123 @@ describe CascadingConfiguration::Setting do
|
|
8
8
|
########################
|
9
9
|
|
10
10
|
it 'can define a configuration setting, which is the primary interface' do
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
11
|
+
|
12
|
+
# extending a module or class works like a finalizer for the cascading configuration
|
13
|
+
# if the configuration is re-opened at a later point (including or extending a lower ancestor)
|
14
|
+
# then the configuration will still cascade upward
|
15
|
+
# this permits ancestors in the heirarchy to skip out on configurations
|
16
|
+
# upward cascade can be frozen at any point using :freeze!, which will prevent further upward lookup
|
17
|
+
|
18
|
+
# possibilities:
|
19
|
+
# * module extended with setting
|
20
|
+
module CascadingConfiguration::Setting::MockModuleExtended
|
21
|
+
extend CascadingConfiguration::Setting
|
22
|
+
# => singleton gets attr_configuration and configurations
|
23
|
+
respond_to?( :attr_configuration ).should == true
|
24
|
+
attr_configuration :some_configuration
|
25
|
+
respond_to?( :some_configuration ).should == true
|
26
|
+
self.some_configuration = :our_setting_value
|
27
|
+
some_configuration.should == :our_setting_value
|
28
|
+
instance_methods.include?( :some_configuration ).should == false
|
29
|
+
# => including modules and classes get nothing
|
30
|
+
module SubmoduleIncluding
|
31
|
+
include CascadingConfiguration::Setting::MockModuleExtended
|
32
|
+
instance_methods.include?( :some_configuration ).should == false
|
33
|
+
respond_to?( :some_configuration ).should == false
|
34
|
+
end
|
35
|
+
# => extending modules and classes get nothing
|
36
|
+
module SubmoduleExtending
|
37
|
+
extend CascadingConfiguration::Setting::MockModuleExtended
|
38
|
+
instance_methods.include?( :some_configuration ).should == false
|
39
|
+
respond_to?( :some_configuration ).should == false
|
40
|
+
end
|
41
|
+
# => instances of including and extending classes get nothing
|
42
|
+
class ClassIncluding
|
43
|
+
include CascadingConfiguration::Setting::MockModuleExtended
|
44
|
+
instance_methods.include?( :some_configuration ).should == false
|
45
|
+
respond_to?( :some_configuration ).should == false
|
46
|
+
end
|
47
|
+
class ClassExtending
|
48
|
+
extend CascadingConfiguration::Setting::MockModuleExtended
|
49
|
+
instance_methods.include?( :some_configuration ).should == false
|
50
|
+
respond_to?( :some_configuration ).should == false
|
51
|
+
end
|
21
52
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
53
|
+
|
54
|
+
# * module included with setting
|
55
|
+
module CascadingConfiguration::Setting::MockModuleIncluded
|
56
|
+
include CascadingConfiguration::Setting
|
57
|
+
# => singleton gets attr_configuration and configurations
|
58
|
+
respond_to?( :attr_configuration ).should == true
|
59
|
+
attr_configuration :some_configuration
|
60
|
+
respond_to?( :some_configuration ).should == true
|
61
|
+
self.some_configuration = :our_setting_value
|
62
|
+
some_configuration.should == :our_setting_value
|
63
|
+
instance_methods.include?( :some_configuration ).should == true
|
64
|
+
# => including modules and classes get attr_configuration and configurations
|
65
|
+
module SubmoduleIncluding
|
66
|
+
include CascadingConfiguration::Setting::MockModuleIncluded
|
67
|
+
instance_methods.include?( :some_configuration ).should == true
|
68
|
+
respond_to?( :some_configuration ).should == true
|
69
|
+
some_configuration.should == :our_setting_value
|
70
|
+
self.some_configuration = :another_configuration
|
71
|
+
some_configuration.should == :another_configuration
|
72
|
+
end
|
73
|
+
# => extending modules and classes get attr_configuration and configurations
|
74
|
+
module SubmoduleExtending
|
75
|
+
extend CascadingConfiguration::Setting::MockModuleIncluded
|
76
|
+
# if we're extended then we want to use the eigenclass ancestor chain
|
77
|
+
# - the first ancestor will be the extending module
|
78
|
+
# - the rest of the ancestors will be the extending module's include chain
|
79
|
+
respond_to?( :some_configuration ).should == true
|
80
|
+
some_configuration.should == :our_setting_value
|
81
|
+
self.some_configuration = :some_other_configuration
|
82
|
+
some_configuration.should == :some_other_configuration
|
83
|
+
instance_methods.include?( :some_configuration ).should == false
|
84
|
+
end
|
85
|
+
# => instances of including classes get configurations
|
86
|
+
class ClassIncluding
|
87
|
+
include CascadingConfiguration::Setting::MockModuleIncluded
|
88
|
+
instance_methods.include?( :some_configuration ).should == true
|
89
|
+
respond_to?( :some_configuration ).should == true
|
90
|
+
some_configuration.should == :our_setting_value
|
91
|
+
self.some_configuration = :another_configuration
|
92
|
+
some_configuration.should == :another_configuration
|
93
|
+
end
|
94
|
+
setting_class_including_instance = ClassIncluding.new
|
95
|
+
setting_class_including_instance.respond_to?( :some_configuration ).should == true
|
96
|
+
setting_class_including_instance.some_configuration.should == :another_configuration
|
97
|
+
self.some_configuration = :our_setting_value
|
98
|
+
some_configuration.should == :our_setting_value
|
99
|
+
# => instances of extending classes get nothing
|
100
|
+
class ClassExtending
|
101
|
+
extend CascadingConfiguration::Setting::MockModuleIncluded
|
102
|
+
respond_to?( :some_configuration ).should == true
|
103
|
+
some_configuration.should == :our_setting_value
|
104
|
+
self.some_configuration = :some_other_configuration
|
105
|
+
some_configuration.should == :some_other_configuration
|
106
|
+
instance_methods.include?( :some_configuration ).should == false
|
107
|
+
end
|
108
|
+
setting_class_including_instance = ClassExtending.new
|
109
|
+
setting_class_including_instance.respond_to?( :some_configuration ).should == false
|
25
110
|
end
|
111
|
+
|
26
112
|
class CascadingConfiguration::Setting::MockClass
|
27
|
-
include CascadingConfiguration::Setting::
|
28
|
-
|
29
|
-
self.
|
113
|
+
include CascadingConfiguration::Setting::MockModuleIncluded::SubmoduleIncluding
|
114
|
+
some_configuration.should == :another_configuration
|
115
|
+
self.some_configuration = :our_setting_value
|
116
|
+
some_configuration.should == :our_setting_value
|
30
117
|
end
|
31
118
|
class CascadingConfiguration::Setting::MockClassSub1 < CascadingConfiguration::Setting::MockClass
|
32
|
-
|
33
|
-
self.
|
34
|
-
|
119
|
+
some_configuration.should == :our_setting_value
|
120
|
+
self.some_configuration = :our_other_setting_value
|
121
|
+
some_configuration.should == :our_other_setting_value
|
35
122
|
end
|
36
123
|
class CascadingConfiguration::Setting::MockClassSub2 < CascadingConfiguration::Setting::MockClassSub1
|
37
|
-
|
38
|
-
self.
|
39
|
-
|
124
|
+
some_configuration.should == :our_other_setting_value
|
125
|
+
self.some_configuration = :a_third_setting_value
|
126
|
+
some_configuration.should == :a_third_setting_value
|
40
127
|
end
|
41
128
|
end
|
42
|
-
|
43
|
-
# test two
|
44
|
-
|
45
|
-
module CascadingConfiguration::Setting::MockModuleExtended
|
46
|
-
include CascadingConfiguration::Setting
|
47
|
-
attr_configuration :some_other_configuration
|
48
|
-
self.some_other_configuration = :our_setting_value
|
49
|
-
some_other_configuration.should == :our_setting_value
|
50
|
-
end
|
51
|
-
|
52
|
-
class CascadingConfiguration::Setting::MockClassExtended
|
53
|
-
extend CascadingConfiguration::Setting::MockModuleExtended
|
54
|
-
self.some_other_configuration = :our_setting_value
|
55
|
-
some_other_configuration.should == :our_setting_value
|
56
|
-
end
|
57
129
|
|
58
130
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 1.1.
|
8
|
+
- 6
|
9
|
+
version: 1.1.6
|
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-07-
|
17
|
+
date: 2011-07-19 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -39,12 +39,12 @@ extensions: []
|
|
39
39
|
extra_rdoc_files: []
|
40
40
|
|
41
41
|
files:
|
42
|
-
- lib/cascading-configuration-setting/CascadingConfiguration/Setting/
|
43
|
-
- lib/cascading-configuration-setting/CascadingConfiguration/Setting/
|
44
|
-
- lib/cascading-configuration-setting/CascadingConfiguration/Setting/
|
42
|
+
- lib/cascading-configuration-setting/CascadingConfiguration/Setting/ConfigurationAccessors.rb
|
43
|
+
- lib/cascading-configuration-setting/CascadingConfiguration/Setting/Interface.rb
|
44
|
+
- lib/cascading-configuration-setting/CascadingConfiguration/Setting/ModuleInclusionExtensionSupport.rb
|
45
45
|
- lib/cascading-configuration-setting/CascadingConfiguration/Setting.rb
|
46
46
|
- lib/cascading-configuration-setting.rb
|
47
|
-
- spec/CascadingConfiguration/Setting/
|
47
|
+
- spec/CascadingConfiguration/Setting/ConfigurationAccessors_spec.rb
|
48
48
|
- spec/CascadingConfiguration/Setting_spec.rb
|
49
49
|
- README.md
|
50
50
|
- README.rdoc
|
@@ -1,36 +0,0 @@
|
|
1
|
-
|
2
|
-
module CascadingConfiguration::Setting::Accessors
|
3
|
-
|
4
|
-
extend CascadingConfiguration::InternalModuleStub
|
5
|
-
|
6
|
-
#############################
|
7
|
-
# define_cascading_setter #
|
8
|
-
#############################
|
9
|
-
|
10
|
-
def define_cascading_setter( configuration_name )
|
11
|
-
configuration_setter_name = ( configuration_name.to_s + '=' ).to_s
|
12
|
-
accessor_support_module = self::AccessorSupportModule
|
13
|
-
accessor_support_module.module_eval do
|
14
|
-
define_method( configuration_setter_name ) do |value|
|
15
|
-
# configuration setter returns setting variable (variable from self), which is now the ID of value
|
16
|
-
return instance_variable_set( accessor_support_module.cascading_variable_name( configuration_name ), value )
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
#############################
|
22
|
-
# define_cascading_getter #
|
23
|
-
#############################
|
24
|
-
|
25
|
-
def define_cascading_getter( configuration_name )
|
26
|
-
configuration_getter_name = configuration_name
|
27
|
-
self::AccessorSupportModule.module_eval do
|
28
|
-
define_method( configuration_getter_name ) do
|
29
|
-
# configuration getter returns current setting value (taken from first superclass with setting)
|
30
|
-
# that means first variable that has been set
|
31
|
-
return get_configuration_searching_upward( configuration_name )
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
|
2
|
-
module CascadingConfiguration::Setting::ClassInstance
|
3
|
-
|
4
|
-
extend CascadingConfiguration::InternalModuleStub
|
5
|
-
|
6
|
-
########################
|
7
|
-
# attr_configuration #
|
8
|
-
########################
|
9
|
-
|
10
|
-
def attr_configuration( *property_names )
|
11
|
-
property_names.each do |this_property_name|
|
12
|
-
# define configuration setter
|
13
|
-
define_cascading_setter( this_property_name )
|
14
|
-
# define configuration getter
|
15
|
-
define_cascading_getter( this_property_name )
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
|
2
|
-
module CascadingConfiguration::Setting::ModuleInstance
|
3
|
-
|
4
|
-
extend CascadingConfiguration::InternalModuleStub
|
5
|
-
|
6
|
-
##############
|
7
|
-
# included #
|
8
|
-
##############
|
9
|
-
|
10
|
-
def included( class_or_module )
|
11
|
-
super if method_defined?( :super )
|
12
|
-
# CascadingConfiguration::Setting
|
13
|
-
module_self = self
|
14
|
-
class_or_module.instance_eval do
|
15
|
-
# whichever module included CascadingConfiguration::Setting, which is now being included
|
16
|
-
# cascade CascadingConfiguration::Setting
|
17
|
-
include CascadingConfiguration::Setting
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
##############
|
22
|
-
# extended #
|
23
|
-
##############
|
24
|
-
|
25
|
-
def extended( class_or_module )
|
26
|
-
super if method_defined?( :super )
|
27
|
-
# CascadingConfiguration::Setting
|
28
|
-
module_self = self
|
29
|
-
class_or_module.instance_eval do
|
30
|
-
# cascade CascadingConfiguration::Setting
|
31
|
-
include CascadingConfiguration::Setting
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|