Sha256: a723a612571c83ed318e667c250faf0df7c1280c40eb7b5dbcd60ea210305707

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

class Redis
  #
  # Class representing a set.
  #
  class Set
    require 'enumerator'
    include Enumerable

    attr_reader :key, :options, :redis
    def initialize(key, redis=$redis, options={})
      @key = key
      @redis = redis
      @options = options
    end

    # Works like add.  Can chain together: list << 'a' << 'b'
    def <<(value)
      add(value)
      self  # for << 'a' << 'b'
    end
    
    # Add the specified value to the set only if it does not exist already.
    # Redis: SADD
    def add(value)
      redis.sadd(key, value)
    end

    # Return all members in the set.  Redis: SMEMBERS
    def members
      redis.smembers(key)
    end
    alias_method :get, :members

    # Returns true if the specified value is in the set.  Redis: SISMEMBER
    def member?(value)
      redis.sismember(key, value)
    end
    alias_method :include?, :member?

    # Delete the value from the set.  Redis: SREM
    def delete(name)
      redis.srem(key, name)
      get
    end

    # Wipe the set entirely.  Redis: DEL
    def clear
      redis.del(key)
    end

    # Iterate through each member of the set.  Redis::Objects mixes in Enumerable,
    # so you can also use familiar methods like +collect+, +detect+, and so forth.
    def each(&block)
      members.each(&block)
    end

    # The number of members in the set. Aliased as size. Redis: SCARD
    def length
      redis.scard(key)
    end
    alias_method :size, :length

    # Returns true if the set has no members. Redis: SCARD == 0
    def empty?
      length == 0
    end

    def ==(x)
      members == x
    end
    
    def to_s
      members.join(', ')
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
redis-objects-0.1.2 lib/redis/set.rb