Class: Vedeu::ConveyorStore

Inherits:
Object
  • Object
show all
Includes:
Store
Defined in:
lib/vedeu/storage/conveyor_store.rb

Overview

Conveyor belt like storage. The belt can move forward (‘load_next`) or backwards (`load_previous`), or a named entry can be retrieved.

Instance Method Summary collapse

Methods included from Store

#each, #empty?, #exists?, #reset, #size, #storage

Constructor Details

#initialize(storage = []) ⇒ Vedeu::ConveyorStore

Parameters:

  • storage (Array) (defaults to: [])


11
12
13
# File 'lib/vedeu/storage/conveyor_store.rb', line 11

def initialize(storage = [])
  @storage = storage
end

Instance Method Details

#in_memoryArray (private)

Returns:

  • (Array)


62
63
64
# File 'lib/vedeu/storage/conveyor_store.rb', line 62

def in_memory
  []
end

#loadObject Also known as: current

Returns:

  • (Object)


16
17
18
# File 'lib/vedeu/storage/conveyor_store.rb', line 16

def load
  storage.first
end

#load_named(name) ⇒ Object

Parameters:

  • name (String)

Returns:

  • (Object)


23
24
25
26
27
28
29
30
31
# File 'lib/vedeu/storage/conveyor_store.rb', line 23

def load_named(name)
  return nil if empty?

  return nil unless storage.include?(name)

  storage.rotate!(storage.index(name))

  load
end

#load_nextObject

Returns:

  • (Object)


34
35
36
37
38
# File 'lib/vedeu/storage/conveyor_store.rb', line 34

def load_next
  storage.rotate!

  load
end

#load_previousObject

Returns:

  • (Object)


41
42
43
44
45
# File 'lib/vedeu/storage/conveyor_store.rb', line 41

def load_previous
  storage.rotate!(-1)

  load
end

#save(data, front = false) ⇒ Object

Parameters:

  • data (Object)
  • front (Boolean) (defaults to: false)


49
50
51
52
53
54
55
56
57
# File 'lib/vedeu/storage/conveyor_store.rb', line 49

def save(data, front = false)
  if front
    storage.push(data)

  else
    storage.unshift(data)

  end
end