Class: Familia::List
Instance Attribute Summary
Attributes inherited from RedisObject
#name, #parent, #redis
Instance Method Summary
collapse
Methods inherited from RedisObject
#db, #dump_method, #exists?, #expire, #expireat, #from_redis, inherited, #initialize, #load_method, #move, #parent?, #realttl, #rediskey, register, registration, #to_redis, #ttl, #type, #update_expiration
Instance Method Details
#<<(v) ⇒ Object
Also known as:
add
259
260
261
|
# File 'lib/familia/redisobject.rb', line 259
def << v
push v
end
|
#[](idx, count = nil) ⇒ Object
Also known as:
slice
279
280
281
282
283
284
285
286
287
288
289
290
291
|
# File 'lib/familia/redisobject.rb', line 279
def [] idx, count=nil
if idx.is_a? Range
range idx.first, idx.last
elsif count
case count <=> 0
when 1 then range(idx, idx + count - 1)
when 0 then []
when -1 then nil
end
else
at idx
end
end
|
#at(idx) ⇒ Object
334
335
336
|
# File 'lib/familia/redisobject.rb', line 334
def at idx
from_redis redis.lindex(rediskey, idx)
end
|
#collect(&blk) ⇒ Object
326
327
328
|
# File 'lib/familia/redisobject.rb', line 326
def collect &blk
range.collect &blk
end
|
#delete(v, count = 0) ⇒ Object
Also known as:
remove, rem, del
294
295
296
|
# File 'lib/familia/redisobject.rb', line 294
def delete v, count=0
redis.lrem rediskey, count, to_redis(v)
end
|
#each(&blk) ⇒ Object
def revmembers count=1 #TODO
range -count, 0
end
318
319
320
|
# File 'lib/familia/redisobject.rb', line 318
def each &blk
range.each &blk
end
|
#each_with_index(&blk) ⇒ Object
322
323
324
|
# File 'lib/familia/redisobject.rb', line 322
def each_with_index &blk
range.each_with_index &blk
end
|
#empty? ⇒ Boolean
249
250
251
|
# File 'lib/familia/redisobject.rb', line 249
def empty?
size == 0
end
|
#first ⇒ Object
338
339
340
|
# File 'lib/familia/redisobject.rb', line 338
def first
at 0
end
|
#last ⇒ Object
342
343
344
|
# File 'lib/familia/redisobject.rb', line 342
def last
at -1
end
|
#members(count = -1) ⇒ Object
Also known as:
all, to_a
307
308
309
310
|
# File 'lib/familia/redisobject.rb', line 307
def members count=-1
count -= 1 if count > 0
range 0, count
end
|
#pop ⇒ Object
271
272
273
|
# File 'lib/familia/redisobject.rb', line 271
def pop
from_redis redis.rpop(rediskey)
end
|
#push(*values) ⇒ Object
253
254
255
256
257
|
# File 'lib/familia/redisobject.rb', line 253
def push *values
values.flatten.compact.each { |v| redis.rpush rediskey, to_redis(v) }
redis.ltrim rediskey, -@opts[:maxlength], -1 if @opts[:maxlength]
self
end
|
#range(sidx = 0, eidx = -1) ⇒ Object
301
302
303
304
305
|
# File 'lib/familia/redisobject.rb', line 301
def range sidx=0, eidx=-1
redis.lrange(rediskey, sidx, eidx).collect do |v|
from_redis v
end
end
|
#select(&blk) ⇒ Object
330
331
332
|
# File 'lib/familia/redisobject.rb', line 330
def select &blk
range.select &blk
end
|
#shift ⇒ Object
275
276
277
|
# File 'lib/familia/redisobject.rb', line 275
def shift
from_redis redis.lpop(rediskey)
end
|
#size ⇒ Object
Also known as:
length
244
245
246
|
# File 'lib/familia/redisobject.rb', line 244
def size
redis.llen rediskey
end
|
#unshift(*values) ⇒ Object
264
265
266
267
268
269
|
# File 'lib/familia/redisobject.rb', line 264
def unshift *values
values.flatten.compact.each { |v| redis.lpush rediskey, to_redis(v) }
redis.ltrim rediskey, 0, @opts[:maxlength] - 1 if @opts[:maxlength]
self
end
|