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) ⇒ Object



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

def __get_result(instance, ...)
  res = nil

  begin
    res = instance.call(...)
  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 = new

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

  raise CommandNotImplementedError unless res.is_a? Result

  res
end

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



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

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:



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

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



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

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)


82
83
84
# File 'lib/slayer/command.rb', line 82

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

#errObject Also known as: flunk



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

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

#err!Object Also known as: flunk!



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

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

#okObject Also known as: pass



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

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

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



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

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