Class: Hari::Node::Queries::List

Inherits:
Object
  • Object
show all
Defined in:
lib/hari/node/queries/list.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node = nil) ⇒ List

Returns a new instance of List.



8
9
10
# File 'lib/hari/node/queries/list.rb', line 8

def initialize(node = nil)
  @node = node
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/hari/node/queries/list.rb', line 6

def name
  @name
end

#nodeObject (readonly)

Returns the value of attribute node.



6
7
8
# File 'lib/hari/node/queries/list.rb', line 6

def node
  @node
end

Instance Method Details

#<<(member) ⇒ Object



114
115
116
# File 'lib/hari/node/queries/list.rb', line 114

def <<(member)
  push member
end

#[](*args) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/hari/node/queries/list.rb', line 29

def [](*args)
  arg = args.first

  if args.size == 2
    range *args
  elsif arg.kind_of? Integer
    at arg
  elsif arg.kind_of? Range
    range arg.first, arg.last
  end
end

#[]=(index, member) ⇒ Object



49
50
51
# File 'lib/hari/node/queries/list.rb', line 49

def []=(index, member)
  Hari.redis.lset key, index, member
end

#at(index) ⇒ Object Also known as: index



68
69
70
# File 'lib/hari/node/queries/list.rb', line 68

def at(index)
  Hari.redis.lindex key, index
end

#countObject Also known as: size, length



78
79
80
# File 'lib/hari/node/queries/list.rb', line 78

def count
  Hari.redis.llen key
end

#delete(member, count = 0) ⇒ Object



128
129
130
# File 'lib/hari/node/queries/list.rb', line 128

def delete(member, count = 0)
  Hari.redis.lrem key, count, member
end

#empty?Boolean

Returns:



85
86
87
# File 'lib/hari/node/queries/list.rb', line 85

def empty?
  count == 0
end

#firstObject



41
42
43
# File 'lib/hari/node/queries/list.rb', line 41

def first
  self[0]
end

#from(index) ⇒ Object



60
61
62
# File 'lib/hari/node/queries/list.rb', line 60

def from(index)
  range index
end

#include?(member) ⇒ Boolean Also known as: member?

Returns:



97
98
99
# File 'lib/hari/node/queries/list.rb', line 97

def include?(member)
  range.include? member
end

#insert_after(pivot, member) ⇒ Object Also known as: insert



122
123
124
# File 'lib/hari/node/queries/list.rb', line 122

def insert_after(pivot, member)
  Hari.redis.linsert key, :after, pivot, member
end

#insert_before(pivot, member) ⇒ Object



118
119
120
# File 'lib/hari/node/queries/list.rb', line 118

def insert_before(pivot, member)
  Hari.redis.linsert key, :before, pivot, member
end

#keyObject



12
13
14
15
16
17
# File 'lib/hari/node/queries/list.rb', line 12

def key
  @key ||= begin
    prefix = node ? "#{Hari.node_key(node)}:" : ''
    prefix + name.to_s
  end
end

#lastObject



45
46
47
# File 'lib/hari/node/queries/list.rb', line 45

def last
  self[-1]
end

#list(name) ⇒ Object



19
20
21
22
# File 'lib/hari/node/queries/list.rb', line 19

def list(name)
  @name = name
  self
end

#list!(name) ⇒ Object



24
25
26
27
# File 'lib/hari/node/queries/list.rb', line 24

def list!(name)
  @name = name
  range
end

#lpush(*members) ⇒ Object



110
111
112
# File 'lib/hari/node/queries/list.rb', line 110

def lpush(*members)
  Hari.redis.lpush key, members
end

#many?Boolean

Returns:



93
94
95
# File 'lib/hari/node/queries/list.rb', line 93

def many?
  count > 1
end

#one?Boolean

Returns:



89
90
91
# File 'lib/hari/node/queries/list.rb', line 89

def one?
  count == 1
end

#popObject Also known as: rpop



132
133
134
# File 'lib/hari/node/queries/list.rb', line 132

def pop
  Hari.redis.rpop key
end

#push(*members) ⇒ Object Also known as: rpush, add



103
104
105
# File 'lib/hari/node/queries/list.rb', line 103

def push(*members)
  Hari.redis.rpush key, members
end

#range(start = 0, stop = -1)) ⇒ Object Also known as: members, to_a



53
54
55
# File 'lib/hari/node/queries/list.rb', line 53

def range(start = 0, stop = -1)
  Hari.redis.lrange key, start, stop
end

#shiftObject Also known as: lpop



138
139
140
# File 'lib/hari/node/queries/list.rb', line 138

def shift
  Hari.redis.lpop key
end

#to(index) ⇒ Object



64
65
66
# File 'lib/hari/node/queries/list.rb', line 64

def to(index)
  range 0, index
end

#trim(start, stop) ⇒ Object



74
75
76
# File 'lib/hari/node/queries/list.rb', line 74

def trim(start, stop)
  Hari.redis.ltrim key, start, stop
end