Class: Restruct::Set

Inherits:
Structure show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/restruct/set.rb

Direct Known Subclasses

MarshalSet

Instance Attribute Summary

Attributes inherited from Structure

#id, #redis

Instance Method Summary collapse

Methods inherited from Structure

#==, #destroy, #dump, #initialize, #restore

Constructor Details

This class inherits a constructor from Restruct::Structure

Instance Method Details

#add(member) ⇒ Object Also known as: <<



14
15
16
17
# File 'lib/restruct/set.rb', line 14

def add(member)
  _add member
  self
end

#add?(member) ⇒ Boolean

Returns:



20
21
22
# File 'lib/restruct/set.rb', line 20

def add?(member)
  _add(member) == 0 ? nil : self
end

#clearObject



54
55
56
57
# File 'lib/restruct/set.rb', line 54

def clear
  destroy
  self
end

#delete(member) ⇒ Object



29
30
31
32
# File 'lib/restruct/set.rb', line 29

def delete(member)
  _delete member
  self
end

#delete?(member) ⇒ Boolean

Returns:



34
35
36
# File 'lib/restruct/set.rb', line 34

def delete?(member)
  _delete(member) == 0 ? nil : self
end

#delete_ifObject



43
44
45
46
# File 'lib/restruct/set.rb', line 43

def delete_if
  each { |e| delete e if yield e }
  self
end

#disjoint?(set) ⇒ Boolean

Returns:



95
96
97
# File 'lib/restruct/set.rb', line 95

def disjoint?(set)
  (to_a & set.to_a).empty?
end

#each(&block) ⇒ Object



73
74
75
# File 'lib/restruct/set.rb', line 73

def each(&block)
  to_a.each(&block)
end

#empty?Boolean

Returns:



65
66
67
# File 'lib/restruct/set.rb', line 65

def empty?
  size == 0
end

#include?(member) ⇒ Boolean

Returns:



69
70
71
# File 'lib/restruct/set.rb', line 69

def include?(member)
  redis.call('SISMEMBER', id, serialize(member)) == 1
end

#intersect?(set) ⇒ Boolean

Returns:



91
92
93
# File 'lib/restruct/set.rb', line 91

def intersect?(set)
  !disjoint? set
end

#keep_ifObject Also known as: select!



48
49
50
51
# File 'lib/restruct/set.rb', line 48

def keep_if
  each { |e| delete e unless yield e }
  self
end

#merge(members) ⇒ Object



24
25
26
27
# File 'lib/restruct/set.rb', line 24

def merge(members)
  _add *members
  self
end

#sizeObject Also known as: count, length



59
60
61
# File 'lib/restruct/set.rb', line 59

def size
  redis.call 'SCARD', id
end

#subtract(members) ⇒ Object



38
39
40
41
# File 'lib/restruct/set.rb', line 38

def subtract(members)
  _delete *members
  self
end

#to_aObject



77
78
79
# File 'lib/restruct/set.rb', line 77

def to_a
  redis.call('SMEMBERS', id).map { |e| deserialize e }
end

#to_setObject Also known as: to_primitive



81
82
83
# File 'lib/restruct/set.rb', line 81

def to_set
  to_a.to_set
end