Module: Lite::Validation::Validator::Node::Implementation::ApplyRuling

Included in:
Abstract
Defined in:
lib/lite/validation/validator/node/implementation/apply_ruling.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.apply_ruling(validator, path: nil) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/lite/validation/validator/node/implementation/apply_ruling.rb', line 12

def self.apply_ruling(validator, path: nil)
  updated, _meta = validator.result.navigate(*path) do |result|
    applied = yield result
    validator.merge_strategy.transform_result(applied, validator, path)
  end
  Helpers::WithResult.with_result(validator, updated)
end

.structured_error(coordinator, error, **opts) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/lite/validation/validator/node/implementation/apply_ruling.rb', line 20

def self.structured_error(coordinator, error, **opts)
  case [error, opts]
  in [StructuredError, {}] then error
  in [Symbol, { ** }] then coordinator.structured_error(error, **opts)
  else raise Error::Fatal, "Unexpected first argument: #{error.inspect}"
  end
end

Instance Method Details

#auto_commit(as:) ⇒ Object



32
33
34
# File 'lib/lite/validation/validator/node/implementation/apply_ruling.rb', line 32

def auto_commit(as:)
  Helpers::WithResult.with_result(self, result.auto_commit(as: as))
end

#commit(value, at: nil) ⇒ Object



28
29
30
# File 'lib/lite/validation/validator/node/implementation/apply_ruling.rb', line 28

def commit(value, at: nil)
  ApplyRuling.apply_ruling(self, path: at) { _1.commit(value) }
end

#dispute(error, at: nil, **opts) ⇒ Object



36
37
38
39
40
# File 'lib/lite/validation/validator/node/implementation/apply_ruling.rb', line 36

def dispute(error, at: nil, **opts)
  ApplyRuling.apply_ruling(self, path: at) do |result|
    result.dispute(ApplyRuling.structured_error(coordinator, error, **opts))
  end
end

#refute(error, at: nil, **opts) ⇒ Object



42
43
44
45
46
# File 'lib/lite/validation/validator/node/implementation/apply_ruling.rb', line 42

def refute(error, at: nil, **opts)
  ApplyRuling.apply_ruling(self, path: at) do |result|
    result.refute(ApplyRuling.structured_error(coordinator, error, **opts))
  end
end