Class: Slayer::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/slayer/command.rb,
lib/slayer/compat/compat_040.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.__get_result(instance, *args, &block) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/slayer/command.rb', line 29

def __get_result(instance, *args, &block)
  res = nil

  begin
    res = instance.call(*args, &block)
  rescue ResultFailureError => e
    res = e.result
  end

  res
end

.call(*args, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
# File 'lib/slayer/command.rb', line 4

def call(*args, &block)
  instance = self.new

  res = __get_result(instance, *args, &block)
  handle_match(res, instance, block) if block_given?

  raise CommandNotImplementedError unless res.is_a? Result

  return res
end

.err(value: nil, status: :default, message: nil) ⇒ Object



20
21
22
# File 'lib/slayer/command.rb', line 20

def err(value: nil, status: :default, message: nil)
  ok(value: value, status: status, message: message).fail
end

.err!(value: nil, status: :default, message: nil) ⇒ Object

Raises:



24
25
26
27
# File 'lib/slayer/command.rb', line 24

def err!(value: nil, status: :default, message: nil)
  warn '[DEPRECATION] `err!` is deprecated.  Please use `return err` instead.'
  raise ResultFailureError, err(value: value, status: status, message: message)
end

.flunk(value: nil, status: :default, message: nil) ⇒ Object



11
12
13
14
# File 'lib/slayer/compat/compat_040.rb', line 11

def flunk(value: nil, status: :default, message: nil)
  warn '[DEPRECATION] `flunk` is deprecated.  Please use `err` instead.'
  err(value: value, status: status, message: message)
end

.flunk!(value: nil, status: :default, message: nil) ⇒ Object



16
17
18
19
# File 'lib/slayer/compat/compat_040.rb', line 16

def flunk!(value: nil, status: :default, message: nil)
  warn '[DEPRECATION] `flunk!` is deprecated.  Please use `return err` instead.'
  err!(value: value, status: status, message: message)
end

.ok(value: nil, status: :default, message: nil) ⇒ Object



16
17
18
# File 'lib/slayer/command.rb', line 16

def ok(value: nil, status: :default, message: nil)
  Result.new(value, status, message)
end

.pass(value: nil, status: :default, message: nil) ⇒ Object



6
7
8
9
# File 'lib/slayer/compat/compat_040.rb', line 6

def pass(value: nil, status: :default, message: nil)
  warn '[DEPRECATION] `pass` is deprecated.  Please use `ok` instead.'
  ok(value: value, status: status, message: message)
end

Instance Method Details

#callObject

Raises:

  • (NotImplementedError)


84
85
86
# File 'lib/slayer/command.rb', line 84

def call
  raise NotImplementedError, 'Commands must define method `#call`.'
end

#err(*args) ⇒ Object Also known as: flunk



66
67
68
# File 'lib/slayer/command.rb', line 66

def err(*args)
  self.class.err(*args)
end

#err!(*args) ⇒ Object Also known as: flunk!



71
72
73
# File 'lib/slayer/command.rb', line 71

def err!(*args)
  self.class.err!(*args)
end

#ok(*args) ⇒ Object Also known as: pass



61
62
63
# File 'lib/slayer/command.rb', line 61

def ok(*args)
  self.class.ok(*args)
end

#try!(value: nil, status: nil, message: nil) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/slayer/command.rb', line 76

def try!(value: nil, status: nil, message: nil)
  r = yield
  err!(value: value, status: status || :default, message: message) unless r.is_a?(Result)
  return r.value if r.ok?

  err!(value: value || r.value, status: status || r.status, message: message || r.message)
end