cascading-configuration-array-unique 2.0.4 → 2.1.0
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/README.md +1 -1
- data/README.rdoc +1 -1
- data/lib/cascading-configuration-array-unique.rb +4 -12
- data/lib/cascading-configuration-array-unique/CascadingConfiguration/Array/Unique.rb +46 -4
- metadata +7 -11
- data/lib/cascading-configuration-array-unique/CascadingConfiguration/Array/Unique/Interface.rb +0 -111
- data/lib/cascading-configuration-array-unique/_private_/CascadingConfiguration/Array/Unique/CompositingArray.rb +0 -166
- data/lib/cascading-configuration-array-unique/_private_/CascadingConfiguration/Array/Unique/ModuleSupportMethods.rb +0 -45
- data/spec/_private_/CascadingConfiguration/Array/CompositingArray_spec.rb +0 -1019
data/README.md
CHANGED
data/README.rdoc
CHANGED
@@ -1,25 +1,17 @@
|
|
1
1
|
|
2
|
+
require 'compositing-array-unique'
|
3
|
+
|
2
4
|
if $__cascading_configuration__spec__development
|
3
|
-
require_relative '../../
|
5
|
+
require_relative '../../variable/lib/cascading-configuration-variable.rb'
|
4
6
|
else
|
5
|
-
require 'cascading-configuration-
|
7
|
+
require 'cascading-configuration-variable'
|
6
8
|
end
|
7
9
|
|
8
10
|
module ::CascadingConfiguration
|
9
11
|
module Array
|
10
12
|
module Unique
|
11
|
-
class CompositingArray < ::CascadingConfiguration::Array::CompositingArray
|
12
|
-
end
|
13
|
-
module ModuleSupportMethods
|
14
|
-
end
|
15
|
-
module Interface
|
16
|
-
end
|
17
13
|
end
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
21
|
-
require_relative 'cascading-configuration-array-unique/_private_/CascadingConfiguration/Array/Unique/CompositingArray.rb'
|
22
|
-
require_relative 'cascading-configuration-array-unique/_private_/CascadingConfiguration/Array/Unique/ModuleSupportMethods.rb'
|
23
|
-
|
24
|
-
require_relative 'cascading-configuration-array-unique/CascadingConfiguration/Array/Unique/Interface.rb'
|
25
17
|
require_relative 'cascading-configuration-array-unique/CascadingConfiguration/Array/Unique.rb'
|
@@ -2,11 +2,53 @@
|
|
2
2
|
module ::CascadingConfiguration::Array::Unique
|
3
3
|
|
4
4
|
# Configuration modules for storage of settings arrays
|
5
|
-
include ::CascadingConfiguration::
|
5
|
+
include ::CascadingConfiguration::Inheritance
|
6
|
+
|
7
|
+
##############################################
|
8
|
+
# attr_configuration_unique_array #
|
9
|
+
# attr_module_configuration_unique_array #
|
10
|
+
# attr_local_configuration_unique_array #
|
11
|
+
# attr_object_configuration_unique_array #
|
12
|
+
# attr_instance_configuration_unique_array #
|
13
|
+
##############################################
|
14
|
+
|
15
|
+
def attr_configuration_unique_array( *configuration_names, & define_block ) ;; end
|
16
|
+
def attr_module_configuration_unique_array( *configuration_names, & define_block ) ;; end
|
17
|
+
def attr_class_configuration_unique_array( *configuration_names, & define_block ) ;; end
|
18
|
+
def attr_local_configuration_unique_array( *configuration_names, & define_block ) ;; end
|
19
|
+
def attr_object_configuration_unique_array( *configuration_names, & define_block ) ;; end
|
20
|
+
def attr_instance_configuration_unique_array( *configuration_names, & define_block ) ;; end
|
21
|
+
|
22
|
+
ccua = self
|
23
|
+
cca = ::CascadingConfiguration::Array
|
24
|
+
ccv = ::CascadingConfiguration::Variable
|
25
|
+
ccm = ::CascadingConfiguration::Methods
|
26
|
+
|
27
|
+
setter_proc = ::Proc.new do |instance, configuration_name, value|
|
28
|
+
|
29
|
+
return instance.__send__( configuration_name ).replace( value )
|
6
30
|
|
7
|
-
|
8
|
-
|
31
|
+
end
|
32
|
+
|
33
|
+
getter_proc = ::Proc.new do |instance, configuration_name|
|
34
|
+
|
35
|
+
composite_unique_array = nil
|
36
|
+
|
37
|
+
if ccv.has_configuration_variable?( instance, configuration_name )
|
38
|
+
composite_unique_array = ccv.get_configuration_variable( instance, configuration_name )
|
39
|
+
else
|
40
|
+
parent_composite_array = nil
|
41
|
+
if ancestor = ::CascadingConfiguration::Variable.ancestor( instance, configuration_name )
|
42
|
+
parent_composite_array = ancestor.__send__( configuration_name )
|
43
|
+
end
|
44
|
+
composite_unique_array = ::CompositingArray::Unique.new( parent_composite_array )
|
45
|
+
ccv.set_configuration_variable( instance, configuration_name, composite_unique_array )
|
46
|
+
end
|
47
|
+
|
48
|
+
return composite_unique_array
|
49
|
+
|
50
|
+
end
|
9
51
|
|
10
|
-
|
52
|
+
ccm.declare_compositing_configuration_object( self, :unique_array, setter_proc, getter_proc )
|
11
53
|
|
12
54
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cascading-configuration-array-unique
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cascading-configuration-variable
|
16
|
-
requirement: &
|
16
|
+
requirement: &70261379169140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70261379169140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: cascading-configuration-array
|
27
|
-
requirement: &
|
27
|
+
requirement: &70261379165120 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,19 +32,15 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70261379165120
|
36
36
|
description: Provides :attr_configuration_array.
|
37
37
|
email: asher@ridiculouspower.com
|
38
38
|
executables: []
|
39
39
|
extensions: []
|
40
40
|
extra_rdoc_files: []
|
41
41
|
files:
|
42
|
-
- lib/cascading-configuration-array-unique/_private_/CascadingConfiguration/Array/Unique/CompositingArray.rb
|
43
|
-
- lib/cascading-configuration-array-unique/_private_/CascadingConfiguration/Array/Unique/ModuleSupportMethods.rb
|
44
|
-
- lib/cascading-configuration-array-unique/CascadingConfiguration/Array/Unique/Interface.rb
|
45
42
|
- lib/cascading-configuration-array-unique/CascadingConfiguration/Array/Unique.rb
|
46
43
|
- lib/cascading-configuration-array-unique.rb
|
47
|
-
- spec/_private_/CascadingConfiguration/Array/CompositingArray_spec.rb
|
48
44
|
- spec/CascadingConfiguration/Array/Unique_spec.rb
|
49
45
|
- README.md
|
50
46
|
- README.rdoc
|
@@ -68,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
64
|
version: '0'
|
69
65
|
requirements: []
|
70
66
|
rubyforge_project: cascading-configuration-array-unique
|
71
|
-
rubygems_version: 1.8.
|
67
|
+
rubygems_version: 1.8.11
|
72
68
|
signing_key:
|
73
69
|
specification_version: 3
|
74
70
|
summary: Support package for cascading-configuration.
|
data/lib/cascading-configuration-array-unique/CascadingConfiguration/Array/Unique/Interface.rb
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
|
2
|
-
module ::CascadingConfiguration::Array::Unique::Interface
|
3
|
-
|
4
|
-
######################
|
5
|
-
# self.setter_proc #
|
6
|
-
######################
|
7
|
-
|
8
|
-
def self.setter_proc( configuration_name )
|
9
|
-
|
10
|
-
return Proc.new do |array|
|
11
|
-
|
12
|
-
return ::CascadingConfiguration::Array::Unique.set_composite_unique_array( self,
|
13
|
-
configuration_name,
|
14
|
-
array )
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
######################
|
21
|
-
# self.getter_proc #
|
22
|
-
######################
|
23
|
-
|
24
|
-
def self.getter_proc( configuration_name )
|
25
|
-
|
26
|
-
return Proc.new do
|
27
|
-
|
28
|
-
return ::CascadingConfiguration::Array::Unique.composite_unique_array( self,
|
29
|
-
configuration_name )
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
#####################################
|
36
|
-
# attr_configuration_unique_array #
|
37
|
-
#####################################
|
38
|
-
|
39
|
-
# defines configuration in class or module
|
40
|
-
# configuration cascades downward to instance including all classes or modules in-between
|
41
|
-
def attr_configuration_unique_array( *configuration_names )
|
42
|
-
|
43
|
-
return ::CascadingConfiguration::Variable.
|
44
|
-
define_cascading_configuration( self,
|
45
|
-
::CascadingConfiguration::Array::Unique::Interface,
|
46
|
-
*configuration_names )
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
############################################
|
51
|
-
# attr_module_configuration_unique_array #
|
52
|
-
############################################
|
53
|
-
|
54
|
-
# defines configuration in class or module
|
55
|
-
# configuration cascades downward to last class or module
|
56
|
-
def attr_module_configuration_unique_array( *configuration_names )
|
57
|
-
|
58
|
-
return ::CascadingConfiguration::Variable.
|
59
|
-
define_module_configuration( self,
|
60
|
-
::CascadingConfiguration::Array::Unique::Interface,
|
61
|
-
*configuration_names )
|
62
|
-
|
63
|
-
end
|
64
|
-
alias_method :attr_class_configuration_unique_array, :attr_module_configuration_unique_array
|
65
|
-
|
66
|
-
###########################################
|
67
|
-
# attr_local_configuration_unique_array #
|
68
|
-
###########################################
|
69
|
-
|
70
|
-
# defines configuration in present class or module context
|
71
|
-
# configuration does not cascade
|
72
|
-
def attr_local_configuration_unique_array( *configuration_names )
|
73
|
-
|
74
|
-
return ::CascadingConfiguration::Variable.
|
75
|
-
define_local_configuration( self,
|
76
|
-
::CascadingConfiguration::Array::Unique::Interface,
|
77
|
-
*configuration_names )
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
############################################
|
82
|
-
# attr_object_configuration_unique_array #
|
83
|
-
############################################
|
84
|
-
|
85
|
-
# defines configuration in present instance
|
86
|
-
# configuration does not cascade
|
87
|
-
def attr_object_configuration_unique_array( *configuration_names )
|
88
|
-
|
89
|
-
return ::CascadingConfiguration::Variable.
|
90
|
-
define_object_configuration( self,
|
91
|
-
::CascadingConfiguration::Array::Unique::Interface,
|
92
|
-
*configuration_names )
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
##############################################
|
97
|
-
# attr_instance_configuration_unique_array #
|
98
|
-
##############################################
|
99
|
-
|
100
|
-
# defines configuration in present class or module context
|
101
|
-
# configuration does not cascade
|
102
|
-
def attr_instance_configuration_unique_array( *configuration_names )
|
103
|
-
|
104
|
-
return ::CascadingConfiguration::Variable.
|
105
|
-
define_instance_configuration( self,
|
106
|
-
::CascadingConfiguration::Array::Unique::Interface,
|
107
|
-
*configuration_names )
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
end
|
@@ -1,166 +0,0 @@
|
|
1
|
-
|
2
|
-
class ::CascadingConfiguration::Array::Unique::CompositingArray <
|
3
|
-
::CascadingConfiguration::Array::CompositingArray
|
4
|
-
|
5
|
-
################
|
6
|
-
# initialize #
|
7
|
-
################
|
8
|
-
|
9
|
-
def initialize( configuration_instance, configuration_name )
|
10
|
-
|
11
|
-
@unique_keys = { }
|
12
|
-
|
13
|
-
super
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
##################################### Self Management ##########################################
|
18
|
-
|
19
|
-
#########
|
20
|
-
# []= #
|
21
|
-
#########
|
22
|
-
|
23
|
-
def []=( index, object )
|
24
|
-
|
25
|
-
# we only set if we don't already have the object being inserted
|
26
|
-
# for this reason we return nil if no insert occurred
|
27
|
-
|
28
|
-
return_value = nil
|
29
|
-
|
30
|
-
# make sure that set is unique
|
31
|
-
unless @unique_keys.has_key?( object )
|
32
|
-
|
33
|
-
@unique_keys[ object ] = true
|
34
|
-
|
35
|
-
return_value = super
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
return return_value
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
############
|
44
|
-
# insert #
|
45
|
-
############
|
46
|
-
|
47
|
-
def insert( index, *objects )
|
48
|
-
|
49
|
-
# we only insert if we don't already have the object being inserted
|
50
|
-
# for this reason we return nil if no insert occurred
|
51
|
-
|
52
|
-
# if we have less elements in self than the index we are inserting at
|
53
|
-
# we need to make sure the nils inserted cascade
|
54
|
-
if index > count
|
55
|
-
if @unique_keys.has_key?( nil )
|
56
|
-
index -= ( index - count + 1 )
|
57
|
-
else
|
58
|
-
objects.unshift( nil )
|
59
|
-
index -= ( index - count )
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# get rid of objects already inserted
|
64
|
-
indexes_to_delete = [ ]
|
65
|
-
objects.each_with_index do |this_object, index|
|
66
|
-
if @unique_keys.has_key?( this_object )
|
67
|
-
indexes_to_delete.push( index )
|
68
|
-
else
|
69
|
-
@unique_keys[ this_object ] = true
|
70
|
-
end
|
71
|
-
end
|
72
|
-
indexes_to_delete.sort.reverse.each do |this_index|
|
73
|
-
objects.delete_at( this_index )
|
74
|
-
end
|
75
|
-
|
76
|
-
return nil if objects.empty?
|
77
|
-
|
78
|
-
return super
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
##############
|
83
|
-
# collect! #
|
84
|
-
# map! #
|
85
|
-
##############
|
86
|
-
|
87
|
-
def collect!
|
88
|
-
|
89
|
-
return to_enum unless block_given?
|
90
|
-
|
91
|
-
delete_indexes = [ ]
|
92
|
-
self.each_with_index do |this_object, index|
|
93
|
-
replacement_object = yield( this_object )
|
94
|
-
if @unique_keys.has_key?( replacement_object ) and replacement_object != this_object
|
95
|
-
delete_indexes.push( index )
|
96
|
-
else
|
97
|
-
self[ index ] = replacement_object
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
delete_indexes.sort.reverse.each do |this_index|
|
102
|
-
delete_at( this_index )
|
103
|
-
end
|
104
|
-
|
105
|
-
return self
|
106
|
-
|
107
|
-
end
|
108
|
-
alias_method :map!, :collect!
|
109
|
-
|
110
|
-
##################################################################################################
|
111
|
-
private ######################################################################################
|
112
|
-
##################################################################################################
|
113
|
-
|
114
|
-
#############################
|
115
|
-
# non_cascading_delete_at #
|
116
|
-
#############################
|
117
|
-
|
118
|
-
def non_cascading_delete_at( index )
|
119
|
-
|
120
|
-
object = super
|
121
|
-
|
122
|
-
@unique_keys.delete( object )
|
123
|
-
|
124
|
-
return object
|
125
|
-
|
126
|
-
end
|
127
|
-
|
128
|
-
######################### Self-as-Sub Management for Parent Updates ############################
|
129
|
-
|
130
|
-
########################################
|
131
|
-
# update_as_sub_array_for_parent_set #
|
132
|
-
########################################
|
133
|
-
|
134
|
-
def update_as_sub_array_for_parent_set( index, object )
|
135
|
-
|
136
|
-
super unless @unique_keys.has_key?( object )
|
137
|
-
|
138
|
-
end
|
139
|
-
|
140
|
-
###########################################
|
141
|
-
# update_as_sub_array_for_parent_insert #
|
142
|
-
###########################################
|
143
|
-
|
144
|
-
def update_as_sub_array_for_parent_insert( index, *objects )
|
145
|
-
|
146
|
-
# new parent indexes have been inserted at index in parent
|
147
|
-
|
148
|
-
# get rid of objects already inserted
|
149
|
-
indexes_to_delete = [ ]
|
150
|
-
objects.each_with_index do |this_object, index|
|
151
|
-
if @unique_keys.has_key?( this_object )
|
152
|
-
indexes_to_delete.push( index )
|
153
|
-
else
|
154
|
-
@unique_keys[ this_object ] = true
|
155
|
-
end
|
156
|
-
end
|
157
|
-
indexes_to_delete.sort.reverse.each do |this_index|
|
158
|
-
objects.delete_at( this_index )
|
159
|
-
end
|
160
|
-
return false if objects.empty?
|
161
|
-
|
162
|
-
super
|
163
|
-
|
164
|
-
end
|
165
|
-
|
166
|
-
end
|