array-unique 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|