Module: FakeRedis::Redis::SetsMethods
- Included in:
- FakeRedis::Redis
- Defined in:
- lib/fakeredis/sets.rb
Instance Method Summary collapse
- #sadd(key, value) ⇒ Object
- #scard(key) ⇒ Object
- #sdiff(key1, *keys) ⇒ Object
- #sdiffstore(destination, key1, *keys) ⇒ Object
- #sinter(*keys) ⇒ Object
- #sinterstore(destination, *keys) ⇒ Object
- #sismember(key, value) ⇒ Object
- #smembers(key) ⇒ Object
- #smove(source, destination, value) ⇒ Object
- #spop(key) ⇒ Object
- #srandmember(key) ⇒ Object
- #srem(key, value) ⇒ Object
- #sunion(*keys) ⇒ Object
- #sunionstore(destination, *keys) ⇒ Object
Instance Method Details
#sadd(key, value) ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/fakeredis/sets.rb', line 4 def sadd(key, value) fail_unless_set(key) case set = @data[key] when nil then @data[key] = Set.new([value.to_s]) when Set then set.add(value.to_s) end end |
#scard(key) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/fakeredis/sets.rb', line 12 def scard(key) fail_unless_set(key) case set = @data[key] when nil then 0 when Set then set.size end end |
#sdiff(key1, *keys) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/fakeredis/sets.rb', line 20 def sdiff(key1, *keys) [key1, *keys].each { |k| fail_unless_set(k) } keys = keys.map { |k| @data[k] || Set.new } keys.inject(@data[key1]) do |memo, set| memo - set end.to_a end |
#sdiffstore(destination, key1, *keys) ⇒ Object
28 29 30 31 32 |
# File 'lib/fakeredis/sets.rb', line 28 def sdiffstore(destination, key1, *keys) fail_unless_set(destination) result = sdiff(key1, *keys) @data[destination] = Set.new(result) end |
#sinter(*keys) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/fakeredis/sets.rb', line 34 def sinter(*keys) keys.each { |k| fail_unless_set(k) } return Set.new if keys.any? { |k| @data[k].nil? } keys = keys.map { |k| @data[k] || Set.new } keys.inject do |set, key| set & key end.to_a end |
#sinterstore(destination, *keys) ⇒ Object
43 44 45 46 47 |
# File 'lib/fakeredis/sets.rb', line 43 def sinterstore(destination, *keys) fail_unless_set(destination) result = sinter(*keys) @data[destination] = Set.new(result) end |
#sismember(key, value) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/fakeredis/sets.rb', line 49 def sismember(key, value) fail_unless_set(key) case set = @data[key] when nil then false when Set then set.include?(value.to_s) end end |
#smembers(key) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/fakeredis/sets.rb', line 57 def smembers(key) fail_unless_set(key) case set = @data[key] when nil then [] when Set then set.to_a.reverse end end |
#smove(source, destination, value) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/fakeredis/sets.rb', line 65 def smove(source, destination, value) fail_unless_set(destination) if elem = self.srem(source, value) self.sadd(destination, value) end end |
#spop(key) ⇒ Object
72 73 74 75 76 77 |
# File 'lib/fakeredis/sets.rb', line 72 def spop(key) fail_unless_set(key) elem = srandmember(key) srem(key, elem) elem end |
#srandmember(key) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/fakeredis/sets.rb', line 79 def srandmember(key) fail_unless_set(key) case set = @data[key] when nil then nil when Set then set.to_a[rand(set.size)] end end |
#srem(key, value) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/fakeredis/sets.rb', line 87 def srem(key, value) fail_unless_set(key) case set = @data[key] when nil then return when Set then set.delete(value.to_s) end end |
#sunion(*keys) ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/fakeredis/sets.rb', line 95 def sunion(*keys) keys.each { |k| fail_unless_set(k) } keys = keys.map { |k| @data[k] || Set.new } keys.inject(Set.new) do |set, key| set | key end.to_a end |
#sunionstore(destination, *keys) ⇒ Object
103 104 105 106 107 |
# File 'lib/fakeredis/sets.rb', line 103 def sunionstore(destination, *keys) fail_unless_set(destination) result = sunion(*keys) @data[destination] = Set.new(result) end |