class TinyFakeRedis

Constants

VERSION

Public Instance Methods

data() click to toggle source
# File lib/tiny_fake_redis.rb, line 8
def data
  @data ||= {}
end
decr(key) click to toggle source
# File lib/tiny_fake_redis.rb, line 17
def decr(key)
  data[key] ||= 0
  data[key] -= 1
end
del(*keys) click to toggle source
# File lib/tiny_fake_redis.rb, line 89
def del(*keys)
  keys.flatten!
  i = 0
  keys.map {|k| data.delete(k) && (i += 1) }
  i
end
get(key) click to toggle source
# File lib/tiny_fake_redis.rb, line 26
def get(key)
  data[key].dup
end
incr(key) click to toggle source
# File lib/tiny_fake_redis.rb, line 12
def incr(key)
  data[key] ||= 0
  data[key] += 1
end
keys(pattern = ".*") click to toggle source
# File lib/tiny_fake_redis.rb, line 85
def keys(pattern = ".*")
  data.keys.filter {|k| k.to_s =~ %r{^#{pattern}$}}
end
lpush(key, val) click to toggle source
# File lib/tiny_fake_redis.rb, line 30
def lpush(key, val)
  require_array(key)
  data[key].unshift val
  data[key].size
end
lrange(key, start_idx, end_idx = -1) click to toggle source
# File lib/tiny_fake_redis.rb, line 58
def lrange(key, start_idx, end_idx = -1)
  require_array(key)
  data[key][start_idx..end_idx] || []
end
lrem(key, count, val) click to toggle source
# File lib/tiny_fake_redis.rb, line 36
def lrem(key, count, val)
  require_array(key)
  arr = get(key)
  removed = 0

  if count == 0
    removed = (arr.select {|v| v == val}).size
    arr.select! {|v| v != val}
  else
    arr.reverse! if count < 0

    count.abs.times do
      removed += 1 unless arr.delete_at(arr.index(val) || arr.size).nil?
    end

    arr.reverse! if count < 0
  end

  data[key] = arr
  removed
end
method_missing(*) click to toggle source
# File lib/tiny_fake_redis.rb, line 96
def method_missing(*)
  return nil
end
rpop(key) click to toggle source
# File lib/tiny_fake_redis.rb, line 74
def rpop(key)
  require_array(key)
  data[key].pop
end
rpoplpush(one, two) click to toggle source
# File lib/tiny_fake_redis.rb, line 79
def rpoplpush(one, two)
  val = rpop(one)
  lpush two, val
  val
end
rpush(key, val) click to toggle source
# File lib/tiny_fake_redis.rb, line 63
def rpush(key, val)
  require_array(key)
  data[key] << val
  data[key].size
end
rpushx(key, val) click to toggle source
# File lib/tiny_fake_redis.rb, line 69
def rpushx(key, val)
  return 0 unless data[key]
  rpush key, val
end
set(key, val) click to toggle source
# File lib/tiny_fake_redis.rb, line 22
def set(key, val)
  data[key] = val
end

Private Instance Methods

raise_wrong_type() click to toggle source
# File lib/tiny_fake_redis.rb, line 106
def raise_wrong_type
  raise Error.new("WRONGTYPE Operation against a key holding the wrong kind of value")
end
require_array(key) click to toggle source
# File lib/tiny_fake_redis.rb, line 101
def require_array(key)
  data[key] ||= []
  raise_wrong_type unless data[key].is_a?(Array)
end