Class: Familia::List

Inherits:
RedisObject show all
Defined in:
lib/familia/redisobject.rb

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

Constructor Details

This class inherits a constructor from Familia::RedisObject

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

Returns:

  • (Boolean)


249
250
251
# File 'lib/familia/redisobject.rb', line 249

def empty?
  size == 0
end

#firstObject



338
339
340
# File 'lib/familia/redisobject.rb', line 338

def first
  at 0
end

#lastObject



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

#popObject



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

#shiftObject



275
276
277
# File 'lib/familia/redisobject.rb', line 275

def shift
  from_redis redis.lpop(rediskey)
end

#sizeObject 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) }
  # TODO: test maxlength
  redis.ltrim rediskey, 0, @opts[:maxlength] - 1 if @opts[:maxlength]
  self
end