class MockRedis::Zset

Attributes

members[R]
scores[R]

Public Class Methods

new() click to toggle source
# File lib/mock_redis/zset.rb, line 13
def initialize
  @members = Set.new
  @scores  = {}
end

Public Instance Methods

add(score, member) click to toggle source
# File lib/mock_redis/zset.rb, line 24
def add(score, member)
  members.add(member)
  scores[member] = score.to_f
  self
end
delete?(member) click to toggle source
# File lib/mock_redis/zset.rb, line 30
def delete?(member)
  scores.delete(member)
  members.delete?(member) && self
end
each() { |score(m), m| ... } click to toggle source
# File lib/mock_redis/zset.rb, line 35
def each
  members.each { |m| yield score(m), m }
end
in_range(min, max) click to toggle source
# File lib/mock_redis/zset.rb, line 39
def in_range(min, max)
  in_from_the_left = case min
                     when '-inf'
                       lambda { |_| true }
                     when '+inf'
                       lambda { |_| false }
                     when /\((.*)$/
                       left_val = $1.to_f
                       lambda { |x| x.to_f > left_val }
                     else
                       lambda { |x| x.to_f >= min.to_f }
                     end

  in_from_the_right = case max
                      when '-inf'
                        lambda { |_| false }
                      when '+inf'
                        lambda { |_| true }
                      when /\((.*)$/
                        right_val = $1.to_f
                        lambda { |x| x.to_f < right_val }
                      else
                        lambda { |x| x.to_f <= max.to_f }
                      end

  sorted.find_all do |(score, _member)|
    in_from_the_left[score] && in_from_the_right[score]
  end
end
initialize_copy(source) click to toggle source
Calls superclass method
# File lib/mock_redis/zset.rb, line 18
def initialize_copy(source)
  super
  @members = @members.clone
  @scores  = @scores.clone
end
intersection(other) { |score(m), score| ... } click to toggle source
# File lib/mock_redis/zset.rb, line 69
def intersection(other)
  if !block_given?
    intersection(other, &:+)
  else
    members.intersection(other.members).reduce(self.class.new) do |acc, m|
      new_score = yield(score(m), other.score(m))
      acc.add(new_score, m)
    end
  end
end
score(member) click to toggle source
# File lib/mock_redis/zset.rb, line 80
def score(member)
  scores[member]
end
sorted() click to toggle source
# File lib/mock_redis/zset.rb, line 84
def sorted
  members.map do |m|
    [score(m), m]
  end.sort
end
sorted_members() click to toggle source
# File lib/mock_redis/zset.rb, line 90
def sorted_members
  sorted.map(&:last)
end
union(other) { |score(m), score| ... } click to toggle source
# File lib/mock_redis/zset.rb, line 94
def union(other)
  if !block_given?
    union(other, &:+)
  else
    members.union(other.members).reduce(self.class.new) do |acc, m|
      new_score = yield(score(m), other.score(m))
      acc.add(new_score, m)
    end
  end
end