Module: Spik::Execution

Included in:
Spik
Defined in:
lib/spik/execution.rb

Instance Method Summary collapse

Instance Method Details

#execute_class_method(method, model_name, as_name = nil) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/spik/execution.rb', line 29

def execute_class_method(method, model_name, as_name = nil)
  variable_name = '@' + method + '_' + model_name + 's'
  variable_name = '@' + as_name.split('__').last if as_name

  instance_variable_set(variable_name, model_name.capitalize.constantize.send(method))

  variable_name
end

#execute_method(method, args) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/spik/execution.rb', line 3

def execute_method(method, args)
  if method == 'delete'
    if args[0] == 'all'
      args[1].capitalize.constantize.send('delete_all', args[2])
    elsif args[2] =~ /id/
      id = args[2].match(/(\d+)/)[0]
      args[1].capitalize.constantize.send('delete', id)
    elsif args[1] =~ /id/
      id = args[1].match(/(\d+)/)[0]
      args[0].capitalize.constantize.send('delete', id)
    end
  else
    variable_name = args.find{ |it| it =~ /as__/ } || '@' + args[1]
    if variable_name =~ /as__/
      variable_name = '@' + variable_name.split('__').last
    elsif args[0] == 'all'
      variable_name += 's'
    end
    if args.size > 2
      instance_variable_set((variable_name), args[1].capitalize.constantize.send(method, args[0].to_sym, :conditions => args.last))
    else
      instance_variable_set((variable_name), args[1].capitalize.constantize.send(method, args[0].to_sym))
    end
  end
end