@@ -15,40 +15,40 @@ def scard(key)
15
15
#
16
16
# @param [String] key
17
17
# @param [String, Array<String>] member one member, or array of members
18
- # @return [Boolean, Integer] `Boolean` when a single member is specified,
19
- # holding whether or not adding the member succeeded, or `Integer` when an
20
- # array of members is specified, holding the number of members that were
21
- # successfully added
22
- def sadd ( key , member )
23
- send_command ( [ :sadd , key , member ] ) do | reply |
24
- if member . is_a? Array
25
- # Variadic: return integer
26
- reply
27
- else
28
- # Single argument: return boolean
29
- Boolify . call ( reply )
30
- end
31
- end
18
+ # @return [Integer] The number of members that were successfully added
19
+ def sadd ( key , * members )
20
+ members . flatten! ( 1 )
21
+ send_command ( [ :sadd , key ] . concat ( members ) )
22
+ end
23
+
24
+ # Add one or more members to a set.
25
+ #
26
+ # @param [String] key
27
+ # @param [String, Array<String>] member one member, or array of members
28
+ # @return [Boolean] Wether at least one member was successfully added.
29
+ def sadd? ( key , * members )
30
+ members . flatten! ( 1 )
31
+ send_command ( [ :sadd , key ] . concat ( members ) , & Boolify )
32
32
end
33
33
34
34
# Remove one or more members from a set.
35
35
#
36
36
# @param [String] key
37
37
# @param [String, Array<String>] member one member, or array of members
38
- # @return [Boolean, Integer] `Boolean` when a single member is specified,
39
- # holding whether or not removing the member succeeded, or `Integer` when an
40
- # array of members is specified, holding the number of members that were
41
- # successfully removed
42
- def srem ( key , member )
43
- send_command ( [ :srem , key , member ] ) do | reply |
44
- if member . is_a? Array
45
- # Variadic: return integer
46
- reply
47
- else
48
- # Single argument: return boolean
49
- Boolify . call ( reply )
50
- end
51
- end
38
+ # @return [Integer] The number of members that were successfully removed
39
+ def srem ( key , * members )
40
+ members . flatten! ( 1 )
41
+ send_command ( [ :srem , key ] . concat ( members ) )
42
+ end
43
+
44
+ # Remove one or more members from a set.
45
+ #
46
+ # @param [String] key
47
+ # @param [String, Array<String>] member one member, or array of members
48
+ # @return [Boolean] Wether at least one member was successfully removed.
49
+ def srem? ( key , * members )
50
+ members . flatten! ( 1 )
51
+ send_command ( [ :srem , key ] . concat ( members ) , & Boolify )
52
52
end
53
53
54
54
# Remove and return one or more random member from a set.
@@ -102,7 +102,8 @@ def sismember(key, member)
102
102
# @param [String, Array<String>] members
103
103
# @return [Array<Boolean>]
104
104
def smismember ( key , *members )
105
- send_command ( [ :smismember , key , *members ] ) do |reply |
105
+ members . flatten! ( 1 )
106
+ send_command ( [ :smismember , key ] . concat ( members ) ) do |reply |
106
107
reply . map ( &Boolify )
107
108
end
108
109
end
@@ -120,7 +121,8 @@ def smembers(key)
120
121
# @param [String, Array<String>] keys keys pointing to sets to subtract
121
122
# @return [Array<String>] members in the difference
122
123
def sdiff ( *keys )
123
- send_command ( [ :sdiff , *keys ] )
124
+ keys . flatten! ( 1 )
125
+ send_command ( [ :sdiff ] . concat ( keys ) )
124
126
end
125
127
126
128
# Subtract multiple sets and store the resulting set in a key.
@@ -129,15 +131,17 @@ def sdiff(*keys)
129
131
# @param [String, Array<String>] keys keys pointing to sets to subtract
130
132
# @return [Integer] number of elements in the resulting set
131
133
def sdiffstore ( destination , *keys )
132
- send_command ( [ :sdiffstore , destination , *keys ] )
134
+ keys . flatten! ( 1 )
135
+ send_command ( [ :sdiffstore , destination ] . concat ( keys ) )
133
136
end
134
137
135
138
# Intersect multiple sets.
136
139
#
137
140
# @param [String, Array<String>] keys keys pointing to sets to intersect
138
141
# @return [Array<String>] members in the intersection
139
142
def sinter ( *keys )
140
- send_command ( [ :sinter , *keys ] )
143
+ keys . flatten! ( 1 )
144
+ send_command ( [ :sinter ] . concat ( keys ) )
141
145
end
142
146
143
147
# Intersect multiple sets and store the resulting set in a key.
@@ -146,15 +150,17 @@ def sinter(*keys)
146
150
# @param [String, Array<String>] keys keys pointing to sets to intersect
147
151
# @return [Integer] number of elements in the resulting set
148
152
def sinterstore ( destination , *keys )
149
- send_command ( [ :sinterstore , destination , *keys ] )
153
+ keys . flatten! ( 1 )
154
+ send_command ( [ :sinterstore , destination ] . concat ( keys ) )
150
155
end
151
156
152
157
# Add multiple sets.
153
158
#
154
159
# @param [String, Array<String>] keys keys pointing to sets to unify
155
160
# @return [Array<String>] members in the union
156
161
def sunion ( *keys )
157
- send_command ( [ :sunion , *keys ] )
162
+ keys . flatten! ( 1 )
163
+ send_command ( [ :sunion ] . concat ( keys ) )
158
164
end
159
165
160
166
# Add multiple sets and store the resulting set in a key.
@@ -163,7 +169,8 @@ def sunion(*keys)
163
169
# @param [String, Array<String>] keys keys pointing to sets to unify
164
170
# @return [Integer] number of elements in the resulting set
165
171
def sunionstore ( destination , *keys )
166
- send_command ( [ :sunionstore , destination , *keys ] )
172
+ keys . flatten! ( 1 )
173
+ send_command ( [ :sunionstore , destination ] . concat ( keys ) )
167
174
end
168
175
169
176
# Scan a set
0 commit comments