Class: Steppe::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/steppe/result.rb

Direct Known Subclasses

Continue, Halt

Defined Under Namespace

Classes: Continue, Halt

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, params: {}, errors: {}, request:, response: nil) ⇒ Result

Returns a new instance of Result.



9
10
11
12
13
14
15
# File 'lib/steppe/result.rb', line 9

def initialize(value, params: {}, errors: {}, request:, response: nil)
  @value = value
  @params = params
  @errors = errors
  @request = request
  @response = response || Rack::Response.new('', 200, {})
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



7
8
9
# File 'lib/steppe/result.rb', line 7

def errors
  @errors
end

#paramsObject (readonly)

Returns the value of attribute params.



7
8
9
# File 'lib/steppe/result.rb', line 7

def params
  @params
end

#requestObject (readonly)

Returns the value of attribute request.



7
8
9
# File 'lib/steppe/result.rb', line 7

def request
  @request
end

#responseObject (readonly)

Returns the value of attribute response.



7
8
9
# File 'lib/steppe/result.rb', line 7

def response
  @response
end

#valueObject (readonly)

Returns the value of attribute value.



7
8
9
# File 'lib/steppe/result.rb', line 7

def value
  @value
end

Instance Method Details

#continueObject



51
# File 'lib/steppe/result.rb', line 51

def continue(...) = valid(...)

#continue?Boolean

TODO: continue and valid are different things. continue = pipeline can proceed with next step valid = result has no errors.

Returns:

  • (Boolean)


22
# File 'lib/steppe/result.rb', line 22

def continue? = valid?

#copy(value: @value, params: @params, errors: @errors, request: @request, response: @response) ⇒ Object



28
29
30
# File 'lib/steppe/result.rb', line 28

def copy(value: @value, params: @params, errors: @errors, request: @request, response: @response)
  self.class.new(value, params:, errors:, request:, response:)
end

#haltObject



52
# File 'lib/steppe/result.rb', line 52

def halt(...) = invalid(...)

#inspectObject



24
25
26
# File 'lib/steppe/result.rb', line 24

def inspect
  %(<#{self.class}##{object_id} [#{response.status}] value:#{value.inspect} errors:#{errors.inspect}>)
end

#invalid(val = value, errors: {}) ⇒ Object



47
48
49
# File 'lib/steppe/result.rb', line 47

def invalid(val = value, errors: {})
  Halt.new(val, params:, errors:, request:, response:)
end

#invalid?Boolean

Returns:

  • (Boolean)


18
19
20
21
# File 'lib/steppe/result.rb', line 18

def invalid? = !valid?
# TODO: continue and valid are different things.
# continue = pipeline can proceed with next step
# valid = result has no errors.

#reset(value) ⇒ Object



38
39
40
41
# File 'lib/steppe/result.rb', line 38

def reset(value)
  @value = value
  self
end

#respond_with(status = nil) ⇒ Object



32
33
34
35
36
# File 'lib/steppe/result.rb', line 32

def respond_with(status = nil, &)
  response.status = status if status
  @response = yield(response) if block_given?
  self
end

#valid(val = value) ⇒ Object



43
44
45
# File 'lib/steppe/result.rb', line 43

def valid(val = value)
  Continue.new(val, params:, errors:, request:, response:)
end

#valid?Boolean

Returns:

  • (Boolean)


17
# File 'lib/steppe/result.rb', line 17

def valid? = true