module Lunar class ResultSet include Enumerable attr :sorted_set_key def initialize(sorted_set_key, &block) @sorted_set_key = sorted_set_key @block = block end def each(&block) all.each(&block) end def all(options = {}) start = Integer(options[:start] || 0) finish = start + Integer(options[:limit] || 0) - 1 Lunar.redis.zrevrange(sorted_set_key, start, finish).map(&@block) end def size Lunar.redis.zcard(sorted_set_key) end end end