array-unique 1.1.0 → 1.1.1
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/array/namespaces.rb +0 -4
- data/lib/array/requires.rb +0 -2
- data/lib/array/unique.rb +2 -1
- data/lib/array/unique/array_interface.rb +27 -43
- data/spec/array/unique_spec.rb +6 -6
- metadata +2 -2
data/lib/array/namespaces.rb
CHANGED
data/lib/array/requires.rb
CHANGED
data/lib/array/unique.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
|
2
2
|
require 'array/hooked'
|
3
|
+
#require_relative '../../../array-hooked/lib/array-hooked.rb'
|
3
4
|
|
4
5
|
# namespaces that have to be declared ahead of time for proper load order
|
5
6
|
require_relative './namespaces'
|
@@ -9,6 +10,6 @@ require_relative './requires.rb'
|
|
9
10
|
|
10
11
|
class ::Array::Unique < ::Array::Hooked
|
11
12
|
|
12
|
-
include ::Array::Unique::
|
13
|
+
include ::Array::Unique::ArrayInterface
|
13
14
|
|
14
15
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
module ::Array::Unique::
|
2
|
+
module ::Array::Unique::ArrayInterface
|
3
3
|
|
4
4
|
include ::Array::Hooked::ArrayInterface
|
5
5
|
|
@@ -9,7 +9,7 @@ module ::Array::Unique::Interface
|
|
9
9
|
# initialize #
|
10
10
|
################
|
11
11
|
|
12
|
-
def initialize( *args )
|
12
|
+
def initialize( configuration_instance = nil, *args )
|
13
13
|
|
14
14
|
@unique_keys = { }
|
15
15
|
|
@@ -32,64 +32,48 @@ module ::Array::Unique::Interface
|
|
32
32
|
|
33
33
|
# make sure that set is unique
|
34
34
|
unless @unique_keys.has_key?( object )
|
35
|
+
|
36
|
+
if index > count
|
37
|
+
index = count
|
38
|
+
unless object.nil? or @unique_keys.has_key?( nil )
|
39
|
+
index += 1
|
40
|
+
end
|
41
|
+
end
|
42
|
+
return_value = super
|
35
43
|
|
36
44
|
@unique_keys[ object ] = true
|
37
45
|
|
38
|
-
return_value = super
|
39
|
-
|
40
46
|
end
|
41
47
|
|
42
48
|
return return_value
|
43
49
|
|
44
50
|
end
|
45
51
|
|
46
|
-
|
47
|
-
#
|
48
|
-
|
52
|
+
################################################
|
53
|
+
# perform_single_object_insert_between_hooks #
|
54
|
+
################################################
|
49
55
|
|
50
|
-
def
|
51
|
-
|
52
|
-
# we only insert if we don't already have the object being inserted
|
53
|
-
# for this reason we return nil if no insert occurred
|
56
|
+
def perform_single_object_insert_between_hooks( index, object )
|
54
57
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
else
|
61
|
-
objects.unshift( nil )
|
62
|
-
index -= ( index - count )
|
63
|
-
end
|
58
|
+
if @unique_keys.has_key?( object )
|
59
|
+
index = nil
|
60
|
+
else
|
61
|
+
@unique_keys[ object ] = true
|
62
|
+
index = super
|
64
63
|
end
|
65
64
|
|
66
|
-
|
67
|
-
indexes_to_delete = [ ]
|
68
|
-
objects.each_with_index do |this_object, index|
|
69
|
-
if @unique_keys.has_key?( this_object )
|
70
|
-
indexes_to_delete.push( index )
|
71
|
-
else
|
72
|
-
@unique_keys[ this_object ] = true
|
73
|
-
end
|
74
|
-
end
|
75
|
-
indexes_to_delete.sort.reverse.each do |this_index|
|
76
|
-
objects.delete_at( this_index )
|
77
|
-
end
|
78
|
-
|
79
|
-
return nil if objects.empty?
|
80
|
-
|
81
|
-
return super
|
65
|
+
return index
|
82
66
|
|
83
67
|
end
|
84
|
-
|
85
|
-
##################################
|
86
|
-
# perform_delete_between_hooks #
|
87
|
-
##################################
|
88
68
|
|
89
|
-
|
90
|
-
|
69
|
+
#####################################
|
70
|
+
# perform_delete_at_between_hooks #
|
71
|
+
#####################################
|
72
|
+
|
73
|
+
def perform_delete_at_between_hooks( index )
|
74
|
+
|
91
75
|
@unique_keys.delete( self[ index ] )
|
92
|
-
|
76
|
+
|
93
77
|
return super
|
94
78
|
|
95
79
|
end
|
data/spec/array/unique_spec.rb
CHANGED
@@ -543,7 +543,7 @@ describe ::Array::Unique do
|
|
543
543
|
|
544
544
|
it 'has a hook that is called before setting a value; return value is used in place of object' do
|
545
545
|
|
546
|
-
class ::Array::Unique::SubMockPreSet < ::Array::
|
546
|
+
class ::Array::Unique::SubMockPreSet < ::Array::Unique
|
547
547
|
|
548
548
|
def pre_set_hook( index, object, is_insert = false )
|
549
549
|
return :some_other_value
|
@@ -565,7 +565,7 @@ describe ::Array::Unique do
|
|
565
565
|
|
566
566
|
it 'has a hook that is called after setting a value' do
|
567
567
|
|
568
|
-
class ::Array::Unique::SubMockPostSet < ::Array::
|
568
|
+
class ::Array::Unique::SubMockPostSet < ::Array::Unique
|
569
569
|
|
570
570
|
def post_set_hook( index, object, is_insert = false )
|
571
571
|
return :some_other_value
|
@@ -587,7 +587,7 @@ describe ::Array::Unique do
|
|
587
587
|
|
588
588
|
it 'has a hook that is called before getting a value; if return value is false, get does not occur' do
|
589
589
|
|
590
|
-
class ::Array::Unique::SubMockPreGet < ::Array::
|
590
|
+
class ::Array::Unique::SubMockPreGet < ::Array::Unique
|
591
591
|
|
592
592
|
def pre_get_hook( index )
|
593
593
|
return false
|
@@ -610,7 +610,7 @@ describe ::Array::Unique do
|
|
610
610
|
|
611
611
|
it 'has a hook that is called after getting a value' do
|
612
612
|
|
613
|
-
class ::Array::Unique::SubMockPostGet < ::Array::
|
613
|
+
class ::Array::Unique::SubMockPostGet < ::Array::Unique
|
614
614
|
|
615
615
|
def post_get_hook( index, object )
|
616
616
|
return :some_other_value
|
@@ -633,7 +633,7 @@ describe ::Array::Unique do
|
|
633
633
|
|
634
634
|
it 'has a hook that is called before deleting an index; if return value is false, delete does not occur' do
|
635
635
|
|
636
|
-
class ::Array::Unique::SubMockPreDelete < ::Array::
|
636
|
+
class ::Array::Unique::SubMockPreDelete < ::Array::Unique
|
637
637
|
|
638
638
|
def pre_delete_hook( index )
|
639
639
|
return false
|
@@ -656,7 +656,7 @@ describe ::Array::Unique do
|
|
656
656
|
|
657
657
|
it 'has a hook that is called after deleting an index' do
|
658
658
|
|
659
|
-
class ::Array::Unique::SubMockPostDelete < ::Array::
|
659
|
+
class ::Array::Unique::SubMockPostDelete < ::Array::Unique
|
660
660
|
|
661
661
|
def post_delete_hook( index, object )
|
662
662
|
return :some_other_value
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: array-unique
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06
|
12
|
+
date: 2012-07-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: array-hooked
|