Class: Gexp::Command::Stack

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/gexp/command/stack.rb

Overview

Стек комманд.

Принимает реквест и разбивает его батч на команды

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, request) ⇒ Stack

Returns a new instance of Stack.



14
15
16
17
18
19
# File 'lib/gexp/command/stack.rb', line 14

def initialize(user, request)
  @user     = user
  @request  = request
  @commands = {} # для ruby 1.9.x иначе OrderedHash
  self.fill()
end

Instance Attribute Details

#requestObject

Returns the value of attribute request.



12
13
14
# File 'lib/gexp/command/stack.rb', line 12

def request
  @request
end

#userObject

Returns the value of attribute user.



12
13
14
# File 'lib/gexp/command/stack.rb', line 12

def user
  @user
end

Instance Method Details

#build_command(command_param = {}) ⇒ Object

Фабрика команд по их параметрам



22
23
24
25
26
27
28
# File 'lib/gexp/command/stack.rb', line 22

def build_command(command_param = {})
  # XXX: пока один поддерживаемый тип комманд
  # TODO: Расширять типы команд отсюда,
  # возможно нужен конфиг соотвествия
  # Тип События - Тип команды
  Gexp::Command::Object.new(command_param)
end

#each(&block) ⇒ Object

Просто перебор команд для Enumerable



46
47
48
# File 'lib/gexp/command/stack.rb', line 46

def each(&block)
  @commands.each(&block)
end

#fill(request = nil) ⇒ Object

Заполняет хеш команд по реквесту



31
32
33
34
35
36
37
38
39
# File 'lib/gexp/command/stack.rb', line 31

def fill(request = nil)
  request ||= @request
  @commands = {}

  opts = request[:params][:commands] || []
  opts.each do |command_param|
    self.add self.build_command(command_param)
  end
end

#sizeObject



41
42
43
# File 'lib/gexp/command/stack.rb', line 41

def size
  @commands.size
end