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, **kwargs, &block) ⇒ Object



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

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

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

  res
end

.call(*args, **kwargs, &block) ⇒ Object



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

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

  res = __get_result(instance, *args, **kwargs, &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
28
29
# File 'lib/slayer/command.rb', line 24

def err!(value: nil, status: :default, message: nil)
  unless ENV['SUPPRESS_SLAYER_WARNINGS']
    warn '[DEPRECATION] `err!` is deprecated.  Please use `return err` instead.'
  end
  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.' unless ENV['SUPPRESS_SLAYER_WARNINGS']
  err(value: value, status: status, message: message)
end

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



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

def flunk!(value: nil, status: :default, message: nil)
  unless ENV['SUPPRESS_SLAYER_WARNINGS']
    warn '[DEPRECATION] `flunk!` is deprecated.  Please use `return err` instead.'
  end
  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.' unless ENV['SUPPRESS_SLAYER_WARNINGS']
  ok(value: value, status: status, message: message)
end

Instance Method Details

#callObject

Raises:

  • (NotImplementedError)


86
87
88
# File 'lib/slayer/command.rb', line 86

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

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



68
69
70
# File 'lib/slayer/command.rb', line 68

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

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



73
74
75
# File 'lib/slayer/command.rb', line 73

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

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



63
64
65
# File 'lib/slayer/command.rb', line 63

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

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



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

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